1. 程式人生 > >SQL 中case when ...then...else ...and用法

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搜尋函式:

SQLcase 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

MySQLcase 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

【統計】SQLcase 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

【語法】SQLcase when then else end用法-解決一個字段根據條件取不同值

where 運行 pos 功能 enter cnblogs logs wro img Case具有兩種格式。簡單Case函數和Case搜索函數。 --簡單Case函數 CASE sex WHEN ‘1‘ THEN ‘男‘ WHEN

SQLcase when then else end用法

Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE

【統計】SQLcase 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 ----------

oraclecase 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    

SQLcase when then else end詳細用法

Case具有兩種格式。簡單Case函式和Case搜尋函式 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE WHE

mysqlLOCATE和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