Ответ Джоэла кажется мне лучшим способом. Публикация для объяснения запроса, а также потому, что в ответе содержится целое число / сумма деления, которая будет возвращать 1 или 0 вместо процента.
Для диапазона 20 -> 32,5:
select CAST(SUM(
CASE WHEN 20 < field AND field <= 32.5 THEN 1 ELSE 0 END
) as float) / COUNT(*) * 100.0
from table
Случай возвращает 1, когда значение находится в диапазоне. Поскольку нет предложения group by, к сумме добавляется результат case для каждой строки таблицы. Конвертировать в float, разделить на количество строк = count (*), и вы получите процент.
Вы также можете написать это как:
select SUM(
CASE WHEN 20 < field AND field <= 32.5 THEN 1.0 ELSE 0.0 END
) / COUNT(*) * 100
from table
Здесь CASE приведет к появлению числа с плавающей запятой 1.0 вместо целого числа 1.