SQL中Case的妙用 二

2021-08-30 12:46:40 字數 1441 閱讀 7527

二,用乙個sql語句完成不同條件的分組。

有如下資料 

國家(country)

性別(***)

人口(population) 中國

1340 中國

2260 美國

1 45

美國 2

55加拿大 1

51加拿大 2

49 英國

1 40

英國 2

60按照國家和性別進行分組,得出結果如下  國家

男 女中國

340260 美國

45 55

加拿大 51

49 英國

40 60

普通情況下,用union也可以實現用一條語句進行查詢。但是那樣增加消耗(兩個select部分),而且sql語句會比較長。 

下面是乙個是用case函式來完成這個功能的例子

select

country,

sum( 

case

when

*** = 

'1'then

population 

else

0 end

),  

--男性人口

sum( 

case

when

*** = 

'2'then

population 

else

0 end

)   

--女性人口

from

table_a

group

bycountry;

這樣我們使用select,完成對二維表的輸出形式,充分顯示了case函式的強大。 

三,在check中使用case函式。

在check中使用case函式在很多情況下都是非常不錯的解決方法。可能有很多人根本就不用check,那麼我建議你在看過下面的例子之後也嘗試一下在sql中使用check。 

下面我們來舉個例子 

公司a,這個公司有個規定,女職員的工資必須高於1000塊。如果用check和case來表現的話,如下所示

constraint

check_salary 

check ( 

case

when

*** = 

'2'

then

case

when

salary > 1000

then

1 else

0 end

else

1 end

= 1 )

如果單純使用check,如下所示 

constraint

check_salary 

check

( *** = 

'2'and

salary > 1000 )

女職員的條件倒是符合了,男職員就無法輸入了。

SQL中Case的妙用 三

四,根據條件有選擇的update。例,有如下更新條件 1.工資5000以上的職員,工資減少10 2.工資在2000到4600之間的職員,工資增加15 很容易考慮的是選擇執行兩次update語句,如下所示 條件1 update personnel setsalary salary 0.9 where ...

SQL中Case的使用方法(二)

二,用乙個sql語句完成不同條件的分組。有如下資料 國家 country 性別 人口 population 中國1 340 中國2 260 美國1 45 美國2 55 加拿大1 51 加拿大2 49 英國1 40 英國2 60 按照國家和性別進行分組,得出結果如下 國家男女 中國340 260 美國...

sql中case的用法

由於之前沒有用到case,乙個簡單的分類統計問題竟被我group by 又union的整得很麻煩,原來case是可以應用得很靈活的。乙個應用場景如下 乙個表中儲存了使用者 姓名,年齡,性別 要求統計 35歲和 35歲的女使用者和南使用者分別是多少 一共四類 開始我是想著先把 35歲的按性別group...