SQL知多少?利用group by配合case when來對數據做區間匯總


如下是產品經理的一個提數需求。

 

 

要求計算出來不同收入區間里的人數、總金額。

怎么實現?

group by是少不了的。不過,總不能每個區間都去執行一次包含group by的select語句吧,那多耽誤工夫啊。教你一招,拿走不謝!

 

group by配合case when,也許你不曉得有多爽!

 

簡化一下場景,例如,下面表格左邊是原始數據,右邊是基於原始數據的統計結果。

原始數據 →→→ 統計結果

user   amt
-------- --------
ZhangSan 10
Molly    15
Biden    21
Hack    16

→→→

amtRange userCount totalAmt
--------   ---------    ----------
1X      3        41
2X      1        21

 下面sql,拿走不謝。

SELECT  CASE WHEN amt>=10 AND amt<20 THEN '1X' WHEN amt>=20 AND amt<30 THEN '2X' ELSE 0 END AS 'amtRange'
    , COUNT(1) AS 'userCount', SUM(amt) AS 'totalAmt'
FROM(
    SELECT 'ZhangSan' AS USER,10  AS amt
    UNION ALL 
    SELECT 'Molly',15 
    UNION ALL 
    SELECT 'Biden',21
    UNION ALL 
    SELECT 'Hack',16
) a
GROUP BY CASE WHEN amt>=10 AND amt<20 THEN '1X' WHEN amt>=20 AND amt<30 THEN '2X' ELSE 0 END

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM