您好,登錄后才能下訂單哦!
這篇文章主要介紹了SQL中的Case語句怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
語法中有很多東西,但它仍然相當(dāng)直觀:關(guān)鍵字CASE表示 case 語句的開始,關(guān)鍵字END表示它的結(jié)束。
然后對于單個條件,您可以編寫關(guān)鍵字,WHEN后跟必須滿足的條件。之后是THEN該條件的關(guān)鍵字和值,例如WHEN <condition> THEN <stuff>.
然后可以跟其他WHEN/THEN語句。
最后,如果ELSE 關(guān)鍵字的所有條件都不為真,您可以添加一個默認(rèn)使用的值,如下所示。
CASE
WHEN condition1 THEN stuff
WHEN condition2 THEN other stuff
...
ELSE default stuff
END
讓我們把它付諸實(shí)踐以更好地理解它。
讓我們CASE在示例中使用該語句。我們有一個表格,上面列出了學(xué)生及其考試成績。我們需要給每個學(xué)生打分,我們可以使用case語句自動完成。
ID | 姓名 | 分?jǐn)?shù) |
---|---|---|
1 | 西米索拉 | 60 |
2 | 伊萬 | 80 |
3 | 梅托迪亞 | 52 |
4 | 卡勒姆 | 98 |
5 | 萊婭 | 84 |
6 | 阿帕雷西達(dá) | 82 |
7 | 烏蘇拉 | 69 |
8 | 齋月 | 78 |
9 | 電暈 | 87 |
10 | 愛麗絲 | 57 |
11 | 凱蘭崔爾 | 89 |
12 | 梅雷爾 | 99 |
13 | 雪莉絲 | 55 |
14 | 尼提亞 | 81 |
15 | 埃爾薩德 | 71 |
16 | 利斯 | 90 |
17 | 約翰娜 | 90 |
18 | 安菲薩 | 90 |
19 | 涼介 | 97 |
20 | 沙猜 | 61 |
21 | 埃爾伯特 | 63 |
22 | 凱特琳 | 51 |
我們可以使用該CASE語句給每個學(xué)生一個成績,我們將在名為 的新列中添加該成績grade。
讓我們先寫下CASE陳述,我們將在其中寫出每個年級的細(xì)目分類。當(dāng)score為 94 或更高時,該行的值為A。如果分?jǐn)?shù)為 90 或更高,則值為A-,依此類推。
CASE
WHEN score >= 94 THEN "A"
WHEN score >= 90 THEN "A-"
WHEN score >= 87 THEN "B+"
WHEN score >= 83 THEN "B"
WHEN score >= 80 THEN "B-"
WHEN score >= 77 THEN "C+"
WHEN score >= 73 THEN "C"
WHEN score >= 70 THEN "C-"
WHEN score >= 67 THEN "D+"
WHEN score >= 60 THEN "D"
ELSE "F"
END
編寫CASE語句后,我們將把它添加到查詢中。然后我們將grade使用AS關(guān)鍵字為列命名:
SELECT *,
CASE
WHEN score >= 94 THEN "A"
WHEN score >= 90 THEN "A-"
WHEN score >= 87 THEN "B+"
WHEN score >= 83 THEN "B"
WHEN score >= 80 THEN "B-"
WHEN score >= 77 THEN "C+"
WHEN score >= 73 THEN "C"
WHEN score >= 70 THEN "C-"
WHEN score >= 67 THEN "D+"
WHEN score >= 60 THEN "D"
ELSE "F"
END AS grade
FROM students_grades;
我們從這個查詢中得到的表格如下所示——現(xiàn)在每個學(xué)生都有一個基于他們的分?jǐn)?shù)的成績。
ID | 姓名 | 分?jǐn)?shù) | 年級 |
---|---|---|---|
1 | 西米索拉 | 60 | D |
2 | 伊萬 | 80 | 乙- |
3 | 梅托迪亞 | 52 | F |
4 | 卡勒姆 | 98 | 一種 |
5 | 萊婭 | 84 | 乙 |
6 | 阿帕雷西達(dá) | 82 | 乙- |
7 | 烏蘇拉 | 69 | D+ |
8 | 齋月 | 78 | C+ |
9 | 電暈 | 87 | 乙+ |
10 | 愛麗絲 | 57 | F |
11 | 凱蘭崔爾 | 89 | 乙+ |
12 | 梅雷爾 | 99 | 一種 |
13 | 雪莉絲 | 55 | F |
14 | 尼提亞 | 81 | 乙- |
15 | 埃爾薩德 | 71 | C- |
16 | 利斯 | 90 | 一種- |
17 | 約翰娜 | 90 | 一種- |
18 | 安菲薩 | 90 | 一種- |
19 | 涼介 | 97 | 一種 |
20 | 沙猜 | 61 | D |
21 | 埃爾伯特 | 63 | D |
22 | 凱特琳 | 51 | F |
我們還可以根據(jù)需要使用除 case 語句之外的其他語句以不同方式操作表。
例如,我們可以使用ORDER BY對行進(jìn)行排序以將最高分排在最前面。
SELECT name,
CASE
WHEN score >= 94 THEN "A"
WHEN score >= 90 THEN "A-"
WHEN score >= 87 THEN "B+"
WHEN score >= 83 THEN "B"
WHEN score >= 80 THEN "B-"
WHEN score >= 77 THEN "C+"
WHEN score >= 73 THEN "C"
WHEN score >= 70 THEN "C-"
WHEN score >= 67 THEN "D+"
WHEN score >= 60 THEN "D"
ELSE "F"
END AS grade
FROM students_grades
ORDER BY score DESC;
我們根據(jù)score哪個是數(shù)字而不是grade列進(jìn)行排序,因?yàn)樽帜疙樞蚺c基于值的等級順序不同。我們使用DESC關(guān)鍵字以降序呈現(xiàn)它,最高值在頂部。
我們得到的表格如下所示:
姓名 | 年級 |
---|---|
梅雷爾 | 一種 |
卡勒姆 | 一種 |
涼介 | 一種 |
利斯 | 一種- |
約翰娜 | 一種- |
安菲薩 | 一種- |
凱蘭崔爾 | 乙+ |
電暈 | 乙+ |
萊婭 | 乙 |
阿帕雷西達(dá) | 乙- |
尼提亞 | 乙- |
伊萬 | 乙- |
齋月 | C+ |
埃爾薩德 | C- |
烏蘇拉 | D+ |
埃爾伯特 | D |
沙猜 | D |
西米索拉 | D |
愛麗絲 | F |
雪莉絲 | F |
梅托迪亞 | F |
凱特琳 | F |
讓我們對這些數(shù)據(jù)做一些分析。我們可以使用GROUP BY并COUNT計(jì)算每個年級收到多少學(xué)生。
SELECT
CASE
WHEN score >= 94
THEN "A"
WHEN score >= 90 THEN "A-"
WHEN score >= 87 THEN "B+"
WHEN score >= 83 THEN "B"
WHEN score >= 80 THEN "B-"
WHEN score >= 77 THEN "C+"
WHEN score >= 73 THEN "C"
WHEN score >= 70 THEN "C-"
WHEN score >= 67 THEN "D+"
WHEN score >= 60 THEN "D"
ELSE "F"
END AS grade,
COUNT(*) AS number_of_students
FROM students_grades
GROUP BY grade
ORDER BY score DESC;
我們使用ORDER BY從高到低的順序?qū)Φ燃夁M(jìn)行排序,我們使用score它是一個數(shù)值(因?yàn)榘磄rade列排序?qū)⑹褂米帜疙樞?,這與按等級的值排序不同)。
年級 | NUMBER_OF_STUDENTS |
---|---|
一種 | 3 |
一種- | 3 |
乙+ | 2 |
乙 | 1 |
乙- | 3 |
C+ | 1 |
C- | 1 |
D+ | 1 |
D | 3 |
F | 4 |
讓我們對這些數(shù)據(jù)做一些不同的分析。我們可以使用GROUP BYandCOUNT和一個不同的 case 語句來計(jì)算有多少學(xué)生通過了考試。然后我們可以使用ORDER BY我們喜歡的順序排列列,通過頂部的學(xué)生人數(shù)。
SELECT
CASE
WHEN score >= 60
THEN "passed"
ELSE "failed"
END AS result,
COUNT(*) AS number_of_students
FROM students_grades
GROUP BY result
ORDER BY result DESC;
我們得到的表格如下所示。班級的表現(xiàn)還不錯,22 名學(xué)生中有 18 名學(xué)生通過了成績——但其他 4 名學(xué)生可能需要一些幫助。
結(jié)果 | NUMBER_OF_STUDENTS |
---|---|
通過 | 18 |
失敗的 | 4 |
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“SQL中的Case語句怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。