1. 程式人生 > >CASE...WHEN...和SUM()函式

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()