What I use to do in those cases is creating a table with the classes and joining against them or use a subquery to create a list of classes.
I think that gives a more intuitive approach and I think it is more flexible since you can update the classes by just updating a table.
Another benefit is that you can get the empty classes too.
the subquery approach could look something like:
ST_ConvexHull(ST_Collect(d.the_geom)) AS the_geom FROM disease_obs
(SELECT 0::float AS classbottom, 1.25::float AS classtop, 1::int AS classid
SELECT 1.25::float AS classbottom, 3.5::float AS classtop, 2::int AS classid
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;
Here I used a right join to also get the empty classes which can be handy sometimes. If you don't want the empty ones just change to an inner join.
If you move the classes to a table and put the rest of the query in a view you can change the classes without touching the query.