1. 程式人生 > >SQL之case when

SQL之case when

參考 技術分享 搜索 fec country nbsp lec center then

大致學習了下SQL的功能語句,case when 類似於c語言中的switich case語句,多分支選擇,不同的值可以有不同的返回量。比如,在一個包含了sex字段的表中,可能的值為1、2,執行完下屬語句後,值為1的地方返回 男,值為2的地方返回 女。

--簡單Case函數
CASE sex
         WHEN ‘1‘ THEN ‘男‘
         WHEN ‘2‘ THEN ‘女‘
ELSE ‘其他‘ END
--Case搜索函數
CASE WHEN sex = ‘1‘ THEN ‘男‘
         WHEN sex = ‘2‘ THEN ‘女‘
ELSE ‘其他‘ END

同時,case語句有兩種實現方式。有如下表格:

國家(country) 人口(population)
中國 600
美國 100
加拿大 100
英國 200
法國 300
日本 250
德國 200
墨西哥 50
印度 250
現在要統計各大洲包含的人數,可利用如下語句實現:
SELECT  SUM(population),
        CASE country
                WHEN ‘中國‘     THEN ‘亞洲‘
                WHEN ‘印度‘     THEN ‘亞洲‘
                WHEN ‘日本‘     THEN ‘亞洲‘
                WHEN ‘美國‘     THEN ‘北美洲‘
                WHEN ‘加拿大‘  THEN ‘北美洲‘
                WHEN ‘墨西哥‘  THEN ‘北美洲‘
        ELSE ‘其他‘ END
FROM    Table_A
GROUP BY CASE country
                WHEN ‘中國‘     THEN ‘亞洲‘
                WHEN ‘印度‘     THEN ‘亞洲‘
                WHEN ‘日本‘     THEN ‘亞洲‘
                WHEN ‘美國‘     THEN ‘北美洲‘
                WHEN ‘加拿大‘  THEN ‘北美洲‘
                WHEN ‘墨西哥‘  THEN ‘北美洲‘
        ELSE ‘其他‘ END;

在sqliteman中對sqlite數據表格的測試代碼及結果如下所示:

技術分享圖片

技術分享圖片

同樣,還可以用該方法判別各大洲國家的個數,代碼及結果如下:

此處,sum(perosn)對各大洲國家所對應的人數值進行求和,返回數值列的總數(總額);count(perosn)對各大洲的國家數進行統計,返回匹配指定條件的行數。

以上資料部分參考自:https://www.cnblogs.com/prefect/p/5746624.html

SQL之case when