В базе данных MySQL есть таблица с одним числовым столбцом value
. Я хочу построить распределение этих значений в виде гистограммы. Ширина каждого столбца на диаграмме должна быть одинаковой, а высота каждого столбца должна отражать количество записей в этом диапазоне.получить распределение значений через SQL
Например, если диапазон значений составляет от -10..90
, а количество диапазонов (баров) - 10, то первый штрих в диаграмме должен показывать количество записей в диапазоне -10..0
, а последнее должно показывать номер записей в диапазоне 80..90
.
Есть ли лучший способ расчета данных штрих-диаграмм, чем следующее:
- Получить мин и макс с
select min(value), max(value) from mytable
- Вычислить верхнюю и нижнюю границы каждого диапазона (в коде приложения)
- Получить количество значений в каждом диапазоне с
select count(*) from mytable where value between X and Y
проблема с этим упрощенным подходом является то, что отдельный запрос нужно будет ISS чтобы найти количество значений в каждом диапазоне, можно ли сделать это более эффективным, например. путем динамического создания запроса и использования GROUP BY
?
Я не думаю, что это мне помогает. В вашем примере группы сами являются значениями, это не относится ко мне. Если вы думаете, что я ошибаюсь, не могли бы вы переработать этот пример так, чтобы 'dt' был десятичным столбцом, а группы состояли из значений в диапазонах с одинаковой шириной? –
См. Edit - может быть, не совсем правильно, но что-то вроде – Strawberry