can be simply series: SELECT (serieValue*5)::text||'-'||(serieValue*5+4)::text AS range, serieValue*5 AS r_min, serieValue*5+4 AS r_max FROM generate_series(5, 10) AS serieValue
or union of static value: SELECT '-24' AS range, double precision '-Infinity' AS r_min, 24 AS r_max UNION ALL SELECT '25-50' AS range, 25 AS r_min, 50 AS r_max UNION ALL SELECT '51+' AS range, 51 AS r_min, double precision 'Infinity' AS r_max
or both: SELECT '-24' AS range, double precision '-Infinity' AS r_min, 24 AS r_max UNION ALL SELECT (serieValue*5)::text||'-'||(serieValue*5+4)::text AS range, serieValue*5 AS r_min, serieValue*5+4 AS r_max FROM generate_series(5, (SELECT max(myintfield)/5 FROM __all)) AS serieValue