久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL中如何使用Case when語句

276次閱讀
沒有評論

共計 2270 個字符,預計需要花費 6 分鐘才能閱讀完成。

這篇文章主要介紹 SQL 中如何使用 Case when 語句,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Case 具有兩種格式。簡單 Case 函數和 Case 搜索函數。

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

這兩種方式,可以實現相同的功能。簡單 Case 函數的寫法相對比較簡潔,但是和 Case 搜索函數相比,功能方面會有些限制,比如寫判斷式。
還有一個需要注意的問題,Case 函數只返回第一個符合條件的值,剩下的 Case 部分將會被自動忽略。

-- 比如說,下面這段 SQL,你永遠無法得到“第二類”這個結果 CASE WHEN col_1 IN (  a ,  b) THEN  第一類 WHEN col_1 IN (a) THEN  第二類 ELSE 其他  END

下面我們來看一下,使用 Case 函數都能做些什么事情。

一,已知數據按照另外一種方式進行分組,分析。

有如下數據:(為了看得更清楚,我并沒有使用國家代碼,而是直接用國家名作為 Primary Key)

國家(country)人口(population)中國 600 美國 100 加拿大 100 英國 200 法國 300 日本 250 德國 200 墨西哥 50 印度 250

根據這個國家人口數據,統計亞洲和北美洲的人口數量。應該得到下面這個結果。

洲人口亞洲 1100 北美洲 250 其他 700

想要解決這個問題,你會怎么做?生成一個帶有洲 Code 的 View,是一個解決方法,但是這樣很難動態的改變統計的方式。
如果使用 Case 函數,SQL 代碼如下:

SELECT SUM(population),CASE countryWHEN  中國  THEN  亞洲 WHEN  印度  THEN  亞洲 WHEN  日本  THEN  亞洲 WHEN  美國  THEN  北美洲 WHEN  加拿大  THEN  北美洲 WHEN  墨西哥  THEN  北美洲 ELSE  其他  ENDFROM Table_AGROUP BY CASE countryWHEN  中國  THEN  亞洲 WHEN  印度  THEN  亞洲 WHEN  日本  THEN  亞洲 WHEN  美國  THEN  北美洲 WHEN  加拿大  THEN  北美洲 WHEN  墨西哥  THEN  北美洲 ELSE  其他  END;

同樣的,我們也可以用這個方法來判斷工資的等級,并統計每一等級的人數。SQL 代碼如下;

SELECTCASE WHEN salary  = 500 THEN  1 WHEN salary   500 AND salary  = 600 THEN  2 WHEN salary   600 AND salary  = 800 THEN  3 WHEN salary   800 AND salary  = 1000 THEN  4 ELSE NULL END salary_class,
COUNT(*)FROM Table_AGROUP BYCASE WHEN salary  = 500 THEN  1 WHEN salary   500 AND salary  = 600 THEN  2 WHEN salary   600 AND salary  = 800 THEN  3 WHEN salary   800 AND salary  = 1000 THEN  4 ELSE NULL END;

二,用一個 SQL 語句完成不同條件的分組。

有如下數據

國家(country)性別(sex)人口(population)中國 1340 中國 2260 美國 145 美國 255 加拿大 151 加拿大 249 英國 140 英國 260

按照國家和性別進行分組,得出結果如下

國家男女中國 340260 美國 4555 加拿大 5149 英國 4060

普通情況下,用 UNION 也可以實現用一條語句進行查詢。但是那樣增加消耗 (兩個 Select 部分),而且 SQL 語句會比較長。
下面是一個是用 Case 函數來完成這個功能的例子

SELECT country,
SUM( CASE WHEN sex =  1  THENpopulation ELSE 0 END), -- 男性人口 SUM( CASE WHEN sex =  2  THENpopulation ELSE 0 END) -- 女性人口 FROM Table_AGROUP BY country;

這樣我們使用 Select,完成對二維表的輸出形式,充分顯示了 Case 函數的強大。

三,在 Check 中使用 Case 函數。

在 Check 中使用 Case 函數在很多情況下都是非常不錯的解決方法。可能有很多人根本就不用 Check,那么我建議你在看過下面的例子之后也嘗試一下在 SQL 中使用 Check。
下面我們來舉個例子
公司 A,這個公司有個規定,女職員的工資必須高于 1000 塊。如果用 Check 和 Case 來表現的話,如下所示

CONSTRAINT check_salary CHECK( CASE WHEN sex =  2 THEN CASE WHEN salary   1000THEN 1 ELSE 0 ENDELSE 1 END = 1 )

如果單純使用 Check,如下所示

CONSTRAINT check_salary CHECK( sex =  2  AND salary   1000 )

以上是“SQL 中如何使用 Case when 語句”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計2270字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 兰考县| 哈尔滨市| 平和县| 平邑县| 肇州县| 齐河县| 霍州市| 云林县| 阿克苏市| 平武县| 望城县| 新疆| 资溪县| 建昌县| 阿克苏市| 敖汉旗| 深圳市| 昌吉市| 辽宁省| 綦江县| 会泽县| 通许县| 鄢陵县| 华蓥市| 吴忠市| 宕昌县| 肃南| 额敏县| 绥德县| 盐边县| 梧州市| 紫金县| 重庆市| 得荣县| 延安市| 沅江市| 固阳县| 铜川市| 潜江市| 新闻| 浦县|