Hola
Lo que suelo hacer en esos casos es crear una tabla con las clases y unirlas contra ellas o usar una subconsulta para crear una lista de clases.
Creo que eso ofrece un enfoque más intuitivo y creo que es más flexible ya que puede actualizar las clases simplemente actualizando una tabla.
Otro beneficio es que también puedes obtener las clases vacías.
El enfoque de subconsulta podría ser similar a:
SELECT
d.disease_type,
ST_ConvexHull(ST_Collect(d.the_geom)) AS the_geom FROM disease_obs
RIGHT JOIN
(SELECT 0::float AS classbottom, 1.25::float AS classtop, 1::int AS classid
UNION ALL
SELECT 1.25::float AS classbottom, 3.5::float AS classtop, 2::int AS classid
UNION ALL
SELECT 3.5::float AS classbottom, 5::float AS classtop, 3::int AS classid) AS classes
ON disease_obs.continuous_value>=classes.classbottom AND disease_obs.continuous_value<classes.classbottom
GROUP BY classes.id;
Aquí utilicé una combinación correcta para obtener también las clases vacías, que a veces pueden ser útiles. Si no desea los vacíos, simplemente cambie a una unión interna.
Si mueve las clases a una tabla y coloca el resto de la consulta en una vista, puede cambiar las clases sin tocar la consulta.
HTH / Nicklas