MICK SQL高階教程 1 1 CASE表示式

2021-10-04 06:10:52 字數 1628 閱讀 4722

-- 簡單 case 表示式 

case ***

when '1' then '男'

when '2' then '女'

else '其他' end

-- 搜尋 case 表示式

case when *** = '1' then '男'

when *** = '2' then '女'

else '其他' end

-- 女性員工的工資必須在 20 萬日元以下

constraint check_salary check

(case when *** = '2'

then case when salary <= 200000

then 1 else 0 end

else 1 end = 1 )

--- 假設現在需要根據以下條件對該錶的資料進行更新。

--- 1. 對當前工資為 30 萬日元以上的員工,降薪 10%。

--- 2. 對當前工資為 25 萬日元以上且不滿 28 萬日元的員工,加薪 20%。

--- 假設先update條件1,再update條件2會出錯,因為執行條件2時資料庫中的資料已經做了更新,不是原始資料了;

-- 所以,用 case 表示式調換主鍵值

update sometable

set p_key = case when p_key = 'a' then 'b'

when p_key = 'b' then 'a'

else p_key end

where p_key in ('a', 'b');

-- 有的學生同時加入了多個社團(如學號為 100、200 的學生),有的學 生只加入了某乙個社團(如學號為 300、400、500 的學生)。對於加入了 多個社團的學生,我們通過將其「主社團標誌」列設定為 y 或者 n 來表 明哪乙個社團是他的主社團;對於只加入了乙個社團的學生,我們將其「主 社團標誌」列設定為 n。

-- 接下來,我們按照下面的條件查詢這張表裡的資料。

-- 1. 獲取只加入了乙個社團的學生的社團 id。

-- 2. 獲取加入了多個社團的學生的主社團 id。

select std_id,

case when count(*) = 1 -- 只加入乙個社團的學生

then max(club_id)

else max(case when main_club_*** = 'y'

then club_id

else null end)

end as main_club

from studentclub

group by std_id;

在 group by 子句裡使用 case 表示式,可以靈活地選擇作為聚合 的單位的編號或等級。這一點在進行非定製化統計時能發揮巨大的威力。

在聚合函式中使用 case 表示式,可以輕鬆地將行結構的資料轉換成列結構的資料。

相反,聚合函式也可以巢狀進 case 表示式裡使用。

相比依賴於具體資料庫的函式,case 表示式有更強大的表達能力和更好的可移植性。

正因為 case 表示式是一種表示式而不是語句,才有了這諸多優點。

菜鳥教程C 高階教程

c 特性 attribute net框架提供了三種預定義特性 attributeusage conditional obsolete 預定義特性attributeusage 預定義特性attributeusage描述了如何使用乙個自定義特性類,它規定了特性可應用到的專案的型別。attributeus...

Linux Vim高階教程

命令模式下 set nu 顯示行號 set nonu 不顯示行號vim o 第乙個檔名 第二個檔名 map 快捷鍵 執行命令 命令 例如 r ls l root 此時會把ls的輸出內容 複製到文字裡面unix linux 轉dos windows unix2dos 源檔名 dos windows 轉...

springcloud高階教程

springcloud為開發人員提供了快速構建分布式系統中一些常見模式的工具 例如配置管理,服務發現,斷路器,智慧型路由,微 控制匯流排 分布式系統的協調導致了樣板模式,使用spring cloud開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任何分布式環境中執行良好,包括開發人員自己...