Oracle中CASE WHEN的用法例項

2021-06-16 07:14:27 字數 2292 閱讀 9367

例項演示:

(1)查詢表users中的資料。

select u.id,u.realname,u.*** from users u;

查詢結果如下

id    realname ***

1  10082 松xx

2  10084 林xx     1

3  10087 西xx

4  10100 胡xx

5  10102 龍xx     1

......

(2)上表結果中的"***"是用**表示的,希望將**用中文表示。可在語句中使用case語句。

select u.id,u.realname,u.***,

( case u.***

when 1 then '男'

when 2 then '女'

else '空的'

end) 性別

from users u;

查詢結果

id    realname ***  性別

1 10082 松xx         空的

2 10084 林xx     1   男

3 10087 西xx         空的

4 10100 胡xx         空的

5 10102 龍xx     1   男

......

如果不希望列表中出現"***"列,語句如下

select u.id,u.realname,

( case u.***

when 1 then '男'

when 2 then '女'

else '空的'

end) 性別

from users u;

(3)將sum與case結合使用,可以實現分段統計。

例如現在我希望將上表中各種性別的人數進行統計,sql語句如下

select

sum( case u.*** when 1 then 1 else 0 end) 男性,

sum( case u.*** when 2 then 1 else 0 end) 女性,

sum( case when u.***<>1 and u.***<>2  then 1 else 0 end) 性別為空

from users u;

執行結果如下

男性  女性  性別為空

1 41    15   0

如果學校內有數千名學生進行了考試,想統計60分以下、60-80分、80-100分的總人數,就可以使用這樣的語句來實現。只是條件不同而已。

(4)如果sum、case when結合group by使用,可以進行分組分段統計。

如,我希望統計users表中每個建立者建立的男性、女性、無性別的使用者總數(資料表中有乙個欄位creator_id,表示建立者的id),語句如下

select u.creator_id 建立者id,

sum( case u.*** when 1 then 1 else 0 end) 男性,

sum( case u.*** when 2 then 1 else 0 end) 女性,

sum( case when u.***<>1 and u.***<>2  then 1 else 0 end) 性別為空

from users u

group by u.creator_id;

查詢結果如下

建立者id 男性 女性 性別為空

1          0    0   0

2 10000    35   12  0

3 11100    0    0   0

4 11060    0    0   0

5 11040    0    0   0

6 11080    2    0   0

7 10281    3    3   0

8 10580    1    0   0

上例中只有乙個分組字段,實現了1級統計;如果有多個分組字段,應該可以實現多級統計了。如有居民統計表,儲存了人口資訊、人口所在市、區、街道資訊等,欲統計深圳市的人口資料,實現統計如下統計結果的話,就可以通過多級分組實現。

區劃    男性居民     女性居民

深圳市            

南山區           

粵海           

科技           

寶安區           

新安           

(5)case when的語法

case

when then

whenthen

else

end

Oracle中case when的用法

最早接觸case when是在行列轉的時候,資料庫中最難的就是各種的查詢,此次的業務需要匯出excel,匯出的內容包含了很多的字段,各種聯合查詢,還有需要計算 分組聯合等。歷經整整一下午終於以近兩百行結束了這個業務。特記錄對於case when的用法,歡迎各位朋友指正,不喜勿噴。首先case whe...

Oracle中的case when的使用

今天要用sql實現乙個小小的邏輯,總之呢,需要用到一些判斷條件,所以準備使用一下 case when的用法,但是由於之前只寫過case when else end單條語句,沒有寫過巢狀,而且 感覺sql寫起來也不好除錯,所以在網上找了下資料。第一步,先寫乙個簡單的巢狀測試一下 select case...

Oracle中case when語句的用法

case when語法 case whenthen whenthen else endcase when else語法要點說明如下 1 以case開頭,以end結尾 2 分支中when 後跟條件,then為顯示結果 3 else 為除此之外的預設情況,類似於高階語言程式中switch case的de...