SQL知多少?利用group by配合case when来对数据做区间汇总
如下是产品经理的一个提数需求。
要求计算出来不同收入区间里的人数、总金额。
怎么实现?
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
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/p/15695724.html