case 函數(shù)是聚合函數(shù)的一種,為統(tǒng)計函數(shù)。
創(chuàng)新互聯(lián)建站專注于丁青網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供丁青營銷型網(wǎng)站建設(shè),丁青網(wǎng)站制作、丁青網(wǎng)頁設(shè)計、丁青網(wǎng)站官網(wǎng)定制、成都小程序開發(fā)服務(wù),打造丁青網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供丁青網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。case表達式:
CASE selector WHEN value1 THEN action1; WHEN value2 THEN action2; WHEN value3 THEN action3
一、CASE WHEN 表達式有兩種形式
(1)簡單Case函數(shù)
CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END
(2)Case搜索函數(shù)
CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END
本篇文章未講解關(guān)于case 搜索函數(shù)用法。
二、CASE WHEN 應(yīng)用
學(xué)生性別統(tǒng)計student表:
------------查詢表中所有的性別
select ID, (case sex when '1' then '男' when '2' then '女' ELSE 'null' END) AS '性別', province as '省份' from `student` ORDER BY `ID` ASC ;
查詢結(jié)果如下:
-------------查詢江蘇省與浙江省男生與女生個數(shù)分別是多少。
第一種計算方法:以省份區(qū)分
select province AS '江蘇省', COUNT(case sex when '男' THEN '男' ELSE null END ) AS '男生', COUNT(case sex when '女' THEN '女' ELSE null END ) AS '女生' from student where `province` ='江蘇' UNION select province AS '江蘇省', COUNT(case sex when '男' THEN '男' ELSE null END ) AS '男生', COUNT(case sex when '女' THEN '女' ELSE null END ) AS '女生' from `student` where `province` ='浙江'
查詢結(jié)果如下:
第二種計算:以性別區(qū)分
select sex, COUNT(case province when '江蘇' THEN '江蘇' ELSE null END ) AS '江蘇省', COUNT(case province when '浙江' THEN '浙江' ELSE null END ) AS '浙江省' from `student` group by `sex` ;
查詢結(jié)果如下:
注意:
COUNT(case province when '江蘇' THEN '江蘇' ELSE null END ) AS '江蘇省',
可以簡寫成:
COUNT( case province when '江蘇' THEN '江蘇' END ) AS '江蘇省'
----------查詢各省份的男女數(shù)量
select province , sex, COUNT(*) AS '總數(shù)' from student GROUP BY province ,sex;
查詢結(jié)果如下:
----------只統(tǒng)計了浙江省的男女數(shù)目
select sex , province, count(case province when '江蘇' then '江蘇' end )as '數(shù)量' from student group by province, sex;
查詢結(jié)果如下:
當數(shù)據(jù)較多時,使用以上數(shù)據(jù)查詢占用大量的資源,因此可以簡單寫成以下形式:
select sex as '性別' , count(case province when '江蘇' then '江蘇' end )as '浙江省' from student group by sex;
查詢結(jié)果如下:
補充:
(1)select (case province when '浙江' then '浙江' when '江蘇' then '江蘇' else province end ) as 省份 from student;
else province 默認為除浙江、江蘇 外顯示其他城市
(2) case when 可以跟不相等的判斷。
可用于=,>=,<,<=,<>,is null,is not null 等的判斷。
如:
三、CASE WHEN 與 DECODE 比較
1,DECODE Oracle 特有;
2,CASE WHEN Oracle , SQL Server, MySQL 都可用;
3,DECODE 只能用做相等判斷,但是可以配合sign函數(shù)進行大于,小于,等于的判斷,
CASE 可用于=,>=,<,<=,<>,is null,is not null 等的判斷;
4,DECODE 使用其來比較簡潔,CASE 雖然復(fù)雜但更為靈活;
分享標題:case函數(shù)語法與使用-創(chuàng)新互聯(lián)
新聞來源:http://jinyejixie.com/article14/dchsge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、企業(yè)網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站排名、品牌網(wǎng)站設(shè)計、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容