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

要求計算出來不同收入區間里的人數、總金額。
怎么實現?
group by是少不了的。不過,總不能每個區間都去執行一次包含group by的select語句吧,那多耽誤工夫啊。教你一招,拿走不謝!
group by配合case when,也許你不曉得有多爽!
簡化一下場景,例如,下面表格左邊是原始數據,右邊是基於原始數據的統計結果。
| 原始數據 | →→→ | 統計結果 |
| user amt |
→→→ |
amtRange userCount totalAmt |
下面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
