如何使用MySQL创建直方图

时间:2012-02-11 07:53:06

标签: mysql sql histogram

我正在尝试使用以下查询创建直方图数据:

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

现在,bucket字段是直方图中使用的范围或bin。我想创建一个具有一致范围的存储桶值,例如从0,4,8,12 ....开始等等。有没有办法在mysql中实现这一点? 这就是我期望得到的结果:

 bucket count
 0        3
 4       21
 8        6

2 个答案:

答案 0 :(得分:7)

我认为我们可以使用以下一般形式来创建一般直方图:

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值

您可以使用此here

将此逻辑应用于您的查询,这将是:

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

如果您对此有任何疑问或疑问,请与我联系。

答案 1 :(得分:0)

只需将Max_Irrad除以40而不是10,就可以让你的水桶更大。