SQL面試必刷題 1 Case When

2021-09-25 20:14:58 字數 3586 閱讀 3336

sql語言是每個開發人員必備的一種技能,本文對面試過程中常見的sql面試題進行分類、彙總,每類題型包括一些例題,希望大家能夠舉一反三。

mysql資料庫中case when語句,是用於計算條件列表並返回多個可能結果表示式之一。

case

when *** =

'1'then

'男'when *** =

'2'then

'女'else

'未知'

end

注意:(1) 在case函式中,else部分的預設值是null。

(2) case函式只返回第乙個符合條件的值,剩下的case部分被自動忽略。

1. 有乙個學生表:students(id, name ,birthday, ***, grade),要求按每個年級統計男生和女生的數量各是多少,統計結果的表頭為:年級,男生數量,女生數量。

select grade,

count

(case

when *** =

1then

1else

null

end) 男生數,

count

(case

when *** =

2then

1else

null

end) 女生數

from students

group

by grade;

2. 有乙個表table1(a,b,c),用sql語句選出兩個列,第一列是a、b兩列的較大者,第二列是b、c兩列的較小者。
select

(case

when a>b then a else b end),

(case

when b>c then b else c end

)from table1

3. 有一張表table2(語文成績、數學成績、英語成績),請用一條sql語句按以下顯示條件得出結果:顯示條件:大於或等於80顯示為優秀,大於或等於60表示及格,小於60分表示不及格。

顯示格式:

語文 數學 英語

及格 優秀 不及格

select

(case

when 語=

80then

'優秀'

when 語=

60then

'及格'

else

'不及格'

)as 語文,

(case

when 數=

80then

'優秀'

when 數=

60then

'及格'

else

'不及格'

)as 數學,

(case

when 英=

80then

'優秀'

when 英=

60then

'及格'

else

'不及格'

)as 英語,

from

table

4. 有如下人口統計資料,要求按照國家和性別進行分組,得出結果如下:

--男性人口

sum(

case

when *** =

'2'then population else

0end

)--女性人口

from table_a group

by country;

1. 與group by 結合,自定義列聯表統計

# 統計每個國家的男女人口數量

select country,

sum(

case

when *** =

'1'then population else

0end),

--男性人口

sum(

case

when *** =

'2'then population else

0end

)--女性人口

from table_a

group

by country;

2. 與group by結合,自定義分組統計
# 統計每個國家的男女人口數量

select country,

sum(

case

when *** =

'1'then population else

0end),

--男性人口

sum(

case

when *** =

'2'then population else

0end

)--女性人口

from table_a

group

by country;

3. 與distinct結合,去重分組統計
# 統計每個型別的數量

select

count

(distinct

case

when

type

='1'

then id else

null

end )type1_count,

count

(distinct

case

when

type

='2'

then id else

null

end )type2_count

from movies

4. 根據條件有選擇的update
# 根據現有工資更新工資:

嵌入式筆試面試題(1) C

c 的類的繼承與多型 1 是不是乙個父類寫了乙個virtual 函式,如果子類覆蓋它的函式不加virtual 也能實現多型?能 2 構造 拷貝構造和賦值運算子的概念 3 struct c c const c c c int i c c operator const c c int i void te...

STL程式設計題1(C 程式設計第8周)

問題描述 下面的程式輸出結果是 1 2 6 7 8 9 請填空 include include include using namespace std int main 在此處補充你的 ostream iterator o cout,copy v.begin v.end o return 0 輸入無...

string用法詳解 刷題必用C (3)

在使用string類之前,需要包含以下標頭檔案 include 1 string s 生成乙個空字串s 2 string s str 拷貝建構函式生成str的複製品 3 string s str,stridx 將字串str內 始於位置stridx 的部分當作字串的初值 4 string s str,...