SQL CASE WHEN多条件

在SQL语句中,我们经常需要根据给定的条件来做出不同的处理。CASE WHEN语句是一种强大的工具,可以根据条件来进行多种操作。本文将详细介绍SQL中CASE WHEN语句的使用和常见的示例。
1. 语法
SQL中的CASE WHEN语句可以根据给定的条件和结果进行多条件判断。它的基本语法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultN
ELSE default_result
END
CASE关键字用于开始CASE WHEN语句。WHEN关键字后面跟着一个条件表达式,如果条件表达式为真,则执行对应的结果表达式。THEN关键字用于指定当条件表达式为真时要执行的结果表达式。- 可以有多个
WHEN子句,每个子句都对应不同的条件和结果。 ELSE关键字用于指定当条件都不满足时要执行的默认结果表达式。END关键字用于结束CASE WHEN语句。
2. 示例
为了更好地理解CASE WHEN语句的用法,下面将给出几个常见的示例。
2.1 根据成绩进行等级划分
假设我们有一个学生表students,其中包含学生的姓名和成绩。现在我们想根据成绩将学生分为优秀、良好、及格和不及格四个等级。可以使用CASE WHEN语句来实现。
SELECT
name,
score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS grade
FROM
students;
运行结果示例:
| name | score | grade |
|---|---|---|
| 张三 | 92 | 优秀 |
| 李四 | 85 | 良好 |
| 王五 | 72 | 及格 |
| 赵六 | 55 | 不及格 |
2.2 根据性别和年龄分组统计人数
假设我们有一个员工表employees,其中包含员工的姓名、性别和年龄。现在我们想按照性别和年龄分组,并统计每个组的人数。
SELECT
sex,
CASE
WHEN age >= 20 AND age <= 30 THEN '20-30岁'
WHEN age > 30 AND age <= 40 THEN '31-40岁'
WHEN age > 40 AND age <= 50 THEN '41-50岁'
ELSE '其他'
END AS age_group,
COUNT(*) AS count
FROM
employees
GROUP BY
sex,
age_group;
运行结果示例:
| sex | age_group | count |
|---|---|---|
| 男 | 20-30岁 | 50 |
| 男 | 31-40岁 | 45 |
| 男 | 41-50岁 | 30 |
| 男 | 其他 | 10 |
| 女 | 20-30岁 | 60 |
| 女 | 31-40岁 | 55 |
| 女 | 41-50岁 | 40 |
| 女 | 其他 | 5 |
3. 总结
使用CASE WHEN语句可以在SQL查询中根据给定的条件来进行多条件判断,从而实现不同的结果。它的语法简单明了,灵活易用,可以有效提高SQL查询的灵活性和可读性。
极客笔记