SQL中case when的用法

2021-08-31 03:35:46 字數 2287 閱讀 8199

一.單個case when用法

首先,新建乙個表:

create table battle(riqi date,result varchar(10))
插入資料:

insert all

into battle values(to_date('2005-05-09','yyyy-mm-dd'),'win')

into battle values(to_date('2005-05-09','yyyy-mm-dd'),'lose')

into battle values(to_date('2005-05-09','yyyy-mm-dd'),'lose')

into battle values(to_date('2005-05-09','yyyy-mm-dd'),'lose')

into battle values(to_date('2005-05-10','yyyy-mm-dd'),'win')

into battle values(to_date('2005-05-10','yyyy-mm-dd'),'lose')

into battle values(to_date('2005-05-10','yyyy-mm-dd'),'lose')

select 1 from dual;

檢視剛才的表:

select * from battle
顯示如下:

現在我們要把所有日期勝利次數,失敗次數分別顯示出來:

預期**如下:

riqi

winlose

2005-05-0913

2005-05-1012

解決方案一:

case 搜尋語句

select riqi, sum(case when result = 'win' then 1 else 0 end) as win, sum(case when result = 'lose' then 1 else 0 end) as lose from battle group by riqi;
解決方案二:

case普通語句

select riqi, sum(case result when 'win' then 1 else 0 end) as win, sum(case result when 'lose' then 1 else 0 end)as lose from battle group by riqi;
二、多個case when的使用

有一張表,裡面有3個字段:chinese,math,english。其中有一條記錄chinese 70分,math 80分,english 58分,請用一條sql語句查詢出所有記錄並按以下條件顯示出來(並寫出您的思路):

大於或等於80表示excellent,大於或等於60表示pass,小於60分表示fail。 如下表:

科目chinese

math

english

level

pass

excellent

fail

select (case when chinese >= 80 then "excellent" when chinese >= 60 then "pass" else "fail" end) as chinese,  

(case when math >= 80 then "excellent" when math >= 60 then "pass" else "fail" end) as math,

(case when english >= 80 then "excellent" when english >= 60 then "pass" else "fail" end) as english

from grade;

注意:在python中,case when的語句最好在後面加as(下圖中圈中部分)且後面的命名也要注意,不然會報錯 unicodedecodeerror: 『ascii』 codec can』t decode byte 0xe4 in position 0: ordinal not in range(128),現在還不清楚是不是這個原因,但是加上之後就沒有報錯了,暫時先這樣記錄

sql中的case when的用法

case有兩種用法 一種是case簡單表示式用法 for example case when 1 then 男 when 2 then 女 else 其他 end另外一種是case搜尋表示式的用法 for example case when 1 then 男 when 2 then 女 else 其...

SQL中case when語句的用法

個人學習筆記,歡迎指導!用法 1 case 欄位名 when 字段值 then 值1 else 值2 end 這一種是之前比較常用的一種方式,相當於是大部分程式語言中的switch case的用法,通過欄位名,去匹配字段值,適合字段值比較固定的情況下使用,特點是比較簡潔易用。示例一 and stat...

自學SQL之CASE WHEN用法

場景1 統計,有多少男同學,多少女同學,並統計男同學中有幾人及格,女同學中有幾人及格,要求用乙個sql輸出結果。表結構如下 其中stu 字段,0表示男生,1表示女生 stu code stu name stu stu score xm小明088 xl小磊055 xf小峰045 xh小紅166 xn曉...