Oracle中CASE WHEN的用法執行個體

來源:互聯網
上載者:User

 

執行個體示範:

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

  select u.id,u.realname,U.SEX from users u;

  查詢結果如下

  ID    REALNAME SEX
  1  10082 松XX
  2  10084 林XX     1
  3  10087 西XX
  4  10100 胡XX
  5  10102 龍XX     1
  ......

  (2)上表結果中的"sex"是用代碼錶示的,希望將代碼用中文表示。可在語句中使用CASE語句。

select u.id,u.realname,U.SEX,
  ( case u.sex
  when 1 then '男'
 
when 2 then '女'
  else '空的'
  END
  ) 性別
from users
u;

 

  查詢結果

  ID    REALNAME SEX  性別
  1 10082 松XX         空的
  2 10084 林XX     1   男
  3 10087 西XX         空的
  4 10100 胡XX         空的
  5 10102 龍XX     1   男
  ......

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

select u.id,u.realname,
( case u.sex
when 1 then '男'
when 2 then
'女'
else '空的'
END
) 性別
from users u;

 

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

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

select
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex
when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and
u.sex<>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.sex when 1 then 1 else 0 end)
男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when
u.sex<>1 and u.sex<>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 <A> THEN <somethingA>
WHEN <B> THEN
<somethingB>
ELSE
<somethingE>
END

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.