CASE...WHEN...和SUM()函数

按照身份证号前几位确定属于什么地区,得出发送旅客人员组成每个地区人数,以便做成饼状图


SELECT
SUM(CASE WHEN SUBSTR(DW_CTKY_GFDPXX.ZJHM,1,4) = ‘3716’ THEN 1 ELSE 0 END)AS 滨州人,
SUM(CASE WHEN SUBSTR(DW_CTKY_GFDPXX.ZJHM,1,4) != ‘3716’ AND SUBSTR(DW_CTKY_GFDPXX.ZJHM,1,2) = ‘37’ THEN 1 ELSE 0 END)AS 滨州以外的山东人,
SUM(CASE WHEN SUBSTR(DW_CTKY_GFDPXX.ZJHM,1,2) = ‘37’ THEN 1 ELSE 0 END)AS 山东人,
SUM(CASE WHEN SUBSTR(DW_CTKY_GFDPXX.ZJHM,1,2) !=’37’ THEN 1 ELSE 0 END)AS 省外人员
FROM QBHCHL.DW_CTKY_GFDPXX
一开始想用count()对数据进行统计,结果mysql一直报错,后来查阅资料得知case when不与count连用,不过使用sum()是可以的,而且mysql中截取字符串前几位可以使用SUBSTRING()或者LEFT()之类的,但是ORACLE中是没有LEFT()函数的,截取的函数名为SUBSTR(),在名字上也区别于SUBSTRING()

猜你喜欢

转载自blog.csdn.net/qq_37937900/article/details/82717428
今日推荐