2012-02-11 62 views
8

我試圖創建一個使用下面的查詢直方圖數據來創建直方圖:如何使用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 

現在的鬥場直方圖中使用的範圍或bin。我想創建一個具有一致範圍的桶值,例如從0,4,8,12開始......等等。有沒有什麼辦法可以在mysql中實現這一點? 這是我很期待有儘可能結果:

bucket count 
0  3 
4  21 
8  6 
+0

我已經提供了上述查詢的結果..你需要從額外的東西分開? – 2012-02-11 08:17:20

+0

這將有助於知道預期的結果是什麼(與您顯示查詢結果的方式相同,並使用相同的樣本數據,以瞭解背後的邏輯) – 2012-02-11 08:24:11

+0

即時試圖將預期結果發佈在列表中形式,但我無法做到這一點。我很抱歉,因爲我是新的論壇 – 2012-02-11 08:29:54

回答

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

解決方案提供工作感謝很多.... :)這將是非常有益的 – 2012-02-11 14:47:30

+1

上述方法是正確的,除非它不會報告有零樣本的桶。 – LionHeart 2012-12-06 05:58:49

+0

另外,如果你的bin大小是非整數,它將無法工作。您需要改爲floor(值/ binSize)* binSize用於非整數bin大小。 – juacala 2014-02-12 15:57:36

0

只是讓你大水桶除以Max_Irrad由40而不是10

+0

是的我試過這樣做,但沒有得到預期的結果 – 2012-02-13 17:58:56