SQL 中case when ...then...else ...and用法
CASE WHEN 基本概念
Case具有兩種格式:簡單Case函式和Case搜尋函式。
簡單Case函式:
CASE sex
WHEN ‘1’ THEN ‘男’
WHEN ‘0’ THEN ‘女’
ELSE ‘其他’ END
Case搜尋函式:
CASE WHEN sex = ‘1’ THEN ‘男’
WHEN sex = ‘0’ THEN ‘女’
ELSE ‘其他’ END
顯然,簡單Case函式生在簡潔,但是它只適用於這種單欄位的單值比較,而Case搜尋函式的優點在於適用於所有比較的情況。
還有一個需要注意的問題,Case函式在滿足了某個符合條件後,剩下的條件將會被自動忽略,因此,即使滿足多個條件,執行過程中也只認第一個條件。
在使用 CASE WHEN時,可以把它當作一個沒有欄位名的欄位,欄位值根據條件確認,在需要使用欄位名時可以是用 as來定義別名。這麼說還很抽象,看看下面 CASE WHEN的使用案例就清楚了。
使用場景
1、可以將已知資料按照某種方式進行分組,分析。
根據這個國家人口資料,統計亞洲和北美洲的人口數量。使用如下 SQL:
SELECTCASE country
WHEN'中國'THEN'亞洲'WHEN'印度'THEN'亞洲'WHEN'日本'THEN'亞洲'WHEN'美國'THEN'北美洲'WHEN'加拿大'THEN'北美洲'WHEN'墨西哥'THEN'北美洲'ELSE'其他' ENDas'洲' , SUM(population) as'人口'FROM test
GROUPBYCASE country
WHEN'中國'THEN'亞洲'WHEN'印度'THEN'亞洲'WHEN'日本'THEN'亞洲'WHEN'美國'THEN'北美洲'WHEN'加拿大'THEN'北美洲'WHEN'墨西哥'THEN'北美洲'ELSE'其他'END;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
這裡的兩個CASE WHEN都相當於一個欄位,不過值得一提的是,第二個CASE WHEN 的THEN值並不用寫明是什麼洲,它只是用於將記錄進行分組,所以THEN後面的值只有能區分這三種記錄就行,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;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2、用一個SQL語句完成不同條件的分組。
有如下資料:
用Case函式來完成按照國家和性別進行分組。使用如下SQL:
SELECT country,
SUM( CASEWHEN sex = '1'THEN population ELSE0END ), --男性人口
SUM( CASEWHEN sex = '2'THEN population ELSE0END ) --女性人口
FROM Table_A
GROUPBY country;
- 1
- 2
- 3
- 4
- 5
得到如下結果:
就第一個CASE WHEN講解:
CASE WHEN sex = '1' THEN
population ELSE 0 END
- 1
- 2
當記錄的sex為1時,這個欄位的值為記錄的population值,否則為0,因此能計算出一個國家的男性人口。
相關推薦
SQL 中case when ...then...else ...and用法
CASE WHEN 基本概念 Case具有兩種格式:簡單Case函式和Case搜尋函式。 簡單Case函式: CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘0’ THEN ‘女’ ELSE ‘其他’ END Case搜尋函式:
SQL中case when then else end用法
一、簡單用法 case具有兩種格式。簡單case函式和case搜尋函式。 簡單case函式 SELECT s.s_id, s.s_name, s.s_sex, CASE WHEN s.s_sex = '1' THEN '男' WHEN s.s_s
MySQL中case when then else的用法
Case具有兩種格式。簡單Case函式和Case搜尋函式。 –簡單Case函式 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜尋函式 CASE WHEN sex = ‘1’ THEN ‘男’ WHEN sex
【統計】SQL之case when then else end用法(用於分類統計)(一)
case具有兩種格式。簡單case函式和case搜尋函式。--簡單case函式 case sex when '1' then '男' when '2' then '女’ else '其他' end --case搜尋函式 case when sex = '1' th
SQL中 case when then end的用法
示例一SELECT 學號, 姓名, 等級= CASE WHEN 總學分 IS NULL THEN ‘尚未選課’ WHEN 總學分 < 50 THEN ‘不及格’ WHEN 總學分 >=50 and 總學分<=52
【語法】SQL中的case when then else end用法-解決一個字段根據條件取不同值
where 運行 pos 功能 enter cnblogs logs wro img Case具有兩種格式。簡單Case函數和Case搜索函數。 --簡單Case函數 CASE sex WHEN ‘1‘ THEN ‘男‘ WHEN
SQL中的case when then else end用法
Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE
【統計】SQL中的case when then else end用法(二)
轉載自:https://www.cnblogs.com/prefect/p/5746624.html(一)和(二)的文章開頭一樣,後面例子不一樣Case具有兩種格式。簡單Case函式和Case搜尋函式。--簡單Case函式 CASE sex WHEN '1'
MySql 中 case when then else end 的用法
sta 結束 name cas ber sel 如果 user num MySql 中 case when then else end 的用法 解釋: SELECT case ----------
oracle中的case when then else end 用法
values ID 你在 union 形式 sql語句 建議 而是 acl Case when 的用法,簡單Case函數 簡單CASE表達式,使用表達式確定返回值. 語法: CASE search_expression WHEN expression1 T
SQL中 case when then 用法
一、case具有兩種格式。簡單case函式和case搜尋函式 --簡單case函式 case sex when '1' then '男' when '2' then '女’ else '其他' end --case搜尋函式 case when sex = '1' the
mysql 中 case when then .... else end 的簡單使用
建議 作用 then style 英語 com col 分享 ont 數據SQL CASE 表達式是一種通用的條件表達式,類似於其它語言中的 if/else 語句。 CASE WHEN condition THEN result WHEN condition THE
mysql 分組、 操作查詢結果case when then else end用法舉例
Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式
mysql操作查詢結果case when then else end用法舉例
Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE WHEN sex = '1' THEN '
oracle之case when then else end用法詳解
闡述 case when then else end 可以理解為java的if-else if -else。是流程控制語句或者條件控制語句,可以自定義邏輯 使用場景 對已知的資料進行邏輯分組或者進
oracle case when then else end用法
語法: CASE search_expression 當表達1那麼結果1 當表達2那麼結果2 比如客戶型別個人0,機構1,產品2對應的證件型別分別對應1018,1019,1355字典項。 下面舉例說明具體實現:如何把某客戶型別對應的證件型別翻譯成中文
SQL利用Case When Then Else End 多條件判斷
Select Case When a is not null then a When b is not null then b When c is not null then c When d is not null then d
SQL中的case when then else end詳細用法
Case具有兩種格式。簡單Case函式和Case搜尋函式 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE WHE
mysql中LOCATE和CASE WHEN...THEN...ELSE...END結合用法
else case put asdf span 項目 oos bstr col 之前項目中需要寫一個sql,就是查出某個調研詳情中,選A答案,B答案,C答案...F答案的人各有多少人,這個sql也是費了很大的力氣才寫出來,故記下來,方便以後使用。 其中tbl_researc
MySql 中關鍵字 case when then else end 的用法
img closed sta bsp sql hid not weight one 解釋: 1 SELECT 2 case -------------如果 3 when sex=‘1‘ then