Как создать гистограмму с помощью MySQL

Я пытаюсь создать данные гистограммы, используя следующий запрос:

SELECT FLOOR(Max_Irrad/10) AS bucket, COUNT(*) AS COUNT
FROM marctest.test_summarynimish
where Lcu_name='Allegro'
  and Lcu_Mode='Standard'
GROUP  BY bucket;

следующий результат, который я получаю:

bucket count
 0        3
 4        3
 5       12
 7        6
 8        3
10        3

Теперь поле ковша-это диапазон или БИН, используемый в гистограмме. Я хочу создать значения ведра с согласованным диапазоном, например, начиная с 0,4,8,12.... и так далее.. Есть ли способ достичь этого в MySQL? Вот как я ожидаю получить результат:

 bucket count
 0        3
 4       21
 8        6

2 ответов


Я думаю, что мы можем использовать следующую форму для создания общей гистограммы:

select (x div 4) * 4 as NewX, count(*) as NewY from histogram
group by NewX

здесь x является реальным значением X оси x и count(*) является реальным значением y. Число 4 - это размер значений x, которые мы хотим сгруппировать. Это означает, что мы сгруппируем все значения x в группы по 4 (например: группа 1-0, 1, 2, 3; Группа 2-4, 5, 6, 7 и т. д.). Количество каждого элемента в группе станет значением NewY

вы можете играть с этим здесь

применяя эту логику к вашему запросу, это будет:

select (floor(Max_Irrad/10) div 4) * 4 as NewX, count(*) as NewY
from marctest.test_summarynimish
where Lcu_name='Allegro' and Lcu_Mode='Standard'
group by NewX

Дайте мне знать, если у вас возникли проблемы или сомнения по этому поводу.


просто сделайте ваши ведра больше, разделив Max_Irrad на 40 вместо 10.