2013-06-26 72 views
0

預先感謝您看看我的問題。我試圖獲取的是獲取用戶交易歷史記錄並對其全部總訂單的收入求和,然後將這些總訂單分組爲段,並計算每個段中有多少用戶。MySQL - 根據SUM分組成範圍

我基本上使用單個表來彙總收入數據。所有意圖和目的的表格都是這樣構成的。

列|樣本數據
ID | 123
ORDER_NUMBER | 123ABC
收入| 10

每個記錄是結構這樣並且對於每次購買的單個記錄。我用下面的SQL按ID總收入

SELECT ID, SUM(ROUND(REVENUE)) as Total_Rev 
FROM REVENUE 
GROUP BY ID 
ORDER BY ID 

我得到的輸出喜歡這個
ID | Total_Rev
1002436 | 11
1002437 | 12
1002438 | 5
10024399 | 2
100244 | 4
10024544 | 21
10024584 | 16
10024624 | 4
1002478 | 8
10024789 | 12
10024843 | 4
10024944 | 9

所以我試圖做的是組ID的通過Total_rev到3個預定義段話,我希望計算每個段的用戶ID。

我段由Total_Rev定義是這樣的:
低:1-5
醫學:6-20
高:21+

我只是不知道如何創建正確的SQL來做這個分割練習。再次感謝您的關注,我會很樂意提供更多詳細信息或回覆有關此問題的任何反饋。

感謝, 克里斯

回答

0

試試這樣說:

SELECT ID, LMH FROM (
    SELECT ID, SUM(ROUND(REVENUE)) as Total_Rev, 'LOW' as LMH 
     FROM REVENUE 
     GROUP BY ID 
     HAVING Total_Rev > 0 AND Total_Rev <= 5 
    UNION ALL 
    SELECT ID, SUM(ROUND(REVENUE)) as Total_Rev, 'Med' as LMH 
     FROM REVENUE 
     GROUP BY ID 
     HAVING Total_Rev > 5 AND Total_Rev <= 20 
    UNION ALL 
    SELECT ID, SUM(ROUND(REVENUE)) as Total_Rev, 'High' as LMH 
     FROM REVENUE 
     GROUP BY ID 
     HAVING Total_Rev > 20) as subquery 
    ORDER BY ID 

我覺得有可能是更優雅的方式做同樣的,但我的發言應太=)

+0

謝謝5im,我今天會給你一個鏡頭,讓你知道結果如何。 –

+0

剛剛使用這種格式,稍作修改以適合我的數據集,並且運行良好。再次感謝! –