您好,登录后才能下订单哦!
这篇文章主要介绍了SQL中的Case语句怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
语法中有很多东西,但它仍然相当直观:关键字CASE表示 case 语句的开始,关键字END表示它的结束。
然后对于单个条件,您可以编写关键字,WHEN后跟必须满足的条件。之后是THEN该条件的关键字和值,例如WHEN <condition> THEN <stuff>.
然后可以跟其他WHEN/THEN语句。
最后,如果ELSE 关键字的所有条件都不为真,您可以添加一个默认使用的值,如下所示。
CASE
WHEN condition1 THEN stuff
WHEN condition2 THEN other stuff
...
ELSE default stuff
END让我们把它付诸实践以更好地理解它。
让我们CASE在示例中使用该语句。我们有一个表格,上面列出了学生及其考试成绩。我们需要给每个学生打分,我们可以使用case语句自动完成。
| ID | 姓名 | 分数 |
|---|---|---|
| 1 | 西米索拉 | 60 |
| 2 | 伊万 | 80 |
| 3 | 梅托迪亚 | 52 |
| 4 | 卡勒姆 | 98 |
| 5 | 莱娅 | 84 |
| 6 | 阿帕雷西达 | 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语句给每个学生一个成绩,我们将在名为 的新列中添加该成绩grade。
让我们先写下CASE陈述,我们将在其中写出每个年级的细目分类。当score为 94 或更高时,该行的值为A。如果分数为 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关键字为列命名:
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;我们从这个查询中得到的表格如下所示——现在每个学生都有一个基于他们的分数的成绩。
| ID | 姓名 | 分数 | 年级 |
|---|---|---|---|
| 1 | 西米索拉 | 60 | D |
| 2 | 伊万 | 80 | 乙- |
| 3 | 梅托迪亚 | 52 | F |
| 4 | 卡勒姆 | 98 | 一种 |
| 5 | 莱娅 | 84 | 乙 |
| 6 | 阿帕雷西达 | 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 |
我们还可以根据需要使用除 case 语句之外的其他语句以不同方式操作表。
例如,我们可以使用ORDER BY对行进行排序以将最高分排在最前面。
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;我们根据score哪个是数字而不是grade列进行排序,因为字母顺序与基于值的等级顺序不同。我们使用DESC关键字以降序呈现它,最高值在顶部。
我们得到的表格如下所示:
| 姓名 | 年级 |
|---|---|
| 梅雷尔 | 一种 |
| 卡勒姆 | 一种 |
| 凉介 | 一种 |
| 利斯 | 一种- |
| 约翰娜 | 一种- |
| 安菲萨 | 一种- |
| 凯兰崔尔 | 乙+ |
| 电晕 | 乙+ |
| 莱娅 | 乙 |
| 阿帕雷西达 | 乙- |
| 尼提亚 | 乙- |
| 伊万 | 乙- |
| 斋月 | C+ |
| 埃尔萨德 | C- |
| 乌苏拉 | D+ |
| 埃尔伯特 | D |
| 沙猜 | D |
| 西米索拉 | D |
| 爱丽丝 | F |
| 雪莉丝 | F |
| 梅托迪亚 | F |
| 凯特琳 | F |
让我们对这些数据做一些分析。我们可以使用GROUP BY并COUNT计算每个年级收到多少学生。
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从高到低的顺序对等级进行排序,我们使用score它是一个数值(因为按grade列排序将使用字母顺序,这与按等级的值排序不同)。
| 年级 | NUMBER_OF_STUDENTS |
|---|---|
| 一种 | 3 |
| 一种- | 3 |
| 乙+ | 2 |
| 乙 | 1 |
| 乙- | 3 |
| C+ | 1 |
| C- | 1 |
| D+ | 1 |
| D | 3 |
| F | 4 |
让我们对这些数据做一些不同的分析。我们可以使用GROUP BYandCOUNT和一个不同的 case 语句来计算有多少学生通过了考试。然后我们可以使用ORDER BY我们喜欢的顺序排列列,通过顶部的学生人数。
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;我们得到的表格如下所示。班级的表现还不错,22 名学生中有 18 名学生通过了成绩——但其他 4 名学生可能需要一些帮助。
| 结果 | NUMBER_OF_STUDENTS |
|---|---|
| 通过 | 18 |
| 失败的 | 4 |
感谢你能够认真阅读完这篇文章,希望小编分享的“SQL中的Case语句怎么用”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。