共計 1492 個字符,預計需要花費 4 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 SQL 中 case when 怎么用,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
SQL 中 case when 的用法
Case 具有兩種格式:簡單 Case 函數(shù)和 Case 搜索函數(shù)。
簡單 Case 函數(shù):
CASE sex
WHEN ‘1’ THEN ‘男’WHEN ‘0’ THEN ‘女’ELSE ‘其他’ END
Case 搜索函數(shù):
CASE WHEN sex = ‘1’ THEN ‘男’WHEN sex = ‘0’ THEN ‘女’ELSE ‘其他’ END
顯然,簡單 Case 函數(shù)勝在簡潔,但是它只適用于這種單字段的單值比較,而 Case 搜索函數(shù)的優(yōu)點在于適用于所有比較的情況。
還有一個需要注意的問題,Case 函數(shù)在滿足了某個符合條件后,剩下的條件將會被自動忽略,因此,即使?jié)M足多個條件,執(zhí)行過程中也只認第一個條件。
在使用 CASE WHEN 時,可以把它當作一個邏輯上的匿名字段,字段值根據(jù)條件確認,在需要使用字段名時可以是用 as 來定義別名。這么說還很抽象,看看下面 CASE WHEN 的使用案例就清楚了。
使用場景
1、可以將已知數(shù)據(jù)按照某種方式進行分組,分析。
根據(jù)這個國家人口數(shù)據(jù),統(tǒng)計亞洲和北美洲的人口數(shù)量。使用如下 SQL:
SELECT CASE country
WHEN 中國 THEN 亞洲
WHEN 印度 THEN 亞洲
WHEN 日本 THEN 亞洲
WHEN 美國 THEN 北美洲
WHEN 加拿大 THEN 北美洲
WHEN 墨西哥 THEN 北美洲
ELSE 其他 END as 洲 , SUM(population) as 人口
FROM test
GROUP BY CASE country
WHEN 中國 THEN 亞洲
WHEN 印度 THEN 亞洲
WHEN 日本 THEN 亞洲
WHEN 美國 THEN 北美洲
WHEN 加拿大 THEN 北美洲
WHEN 墨西哥 THEN 北美洲
ELSE 其他 END;
這里的兩個 CASE WHEN 都相當于一個字段,不過值得一提的是,第二個 CASE WHEN 的 THEN 值并不用寫明是什么洲,它只是用于將記錄進行分組,所以 THEN 后面的值只有能區(qū)分這三種記錄就行,GROUP BY 也可以寫成:
GROUP BY CASE country
WHEN 中國 THEN 0
WHEN 印度 THEN 0
WHEN 日本 THEN 0
WHEN 美國 THEN 1
WHEN 加拿大 THEN 1
WHEN 墨西哥 THEN 1
ELSE 2 END;
2、用一個 SQL 語句完成不同條件的分組。
有如下數(shù)據(jù):
用 Case 函數(shù)來完成按照國家和性別進行分組。使用如下 SQL:
SELECT country,
SUM( CASE WHEN sex = 1 THEN population ELSE 0 END ), -- 男性人口
SUM( CASE WHEN sex = 2 THEN population ELSE 0 END ) -- 女性人口
FROM Table_A
GROUP BY country;
得到如下結果:
就第一個 CASE WHEN 講解:
CASE WHEN sex = 1 THEN
population ELSE 0 END
當記錄的 sex 為 1 時,這個字段的值為記錄的 population 值,否則為 0,因此能計算出一個國家的男性人口。
關于“SQL 中 case when 怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
向 AI 問一下細節(jié)