2024年3月14日发(作者:)
case when用法sql例子
什么是CASE WHEN语句?
CASE WHEN语句是SQL中的一种条件逻辑表达式,用于根据不同的条
件返回不同的结果值。它常用于SELECT语句中的列转换、聚合函数中的
条件计算以及WHERE子句中的条件过滤等。CASE WHEN语句的一般语
法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
其中,condition1、condition2等是条件表达式,result1、result2等是
对应的结果值,ELSE子句是可选的,用于指定当所有条件都不满足时的默
认结果。
CASE WHEN语句的使用场景
CASE WHEN语句在SQL查询中有很多实际应用场景。下面举几个例子
来说明其用法。
1. 列转换
假设有一个客户表,其中包含了客户的姓名和国籍,现在需要将国籍转换
成相应的地区名称,并返回转换后的结果。可以使用CASE WHEN语句
来实现这个需求,例如:
SELECT name,
CASE WHEN nationality = 'China' THEN '亚洲'
WHEN nationality = 'USA' THEN '北美洲'
WHEN nationality = 'Germany' THEN '欧洲'
ELSE '其他'
END AS region
FROM customers;
通过以上查询语句,我们可以将原始的国籍数据转换成对应的地区名称并
返回,方便了后续数据分析和处理。
2. 聚合函数中的条件计算
在使用聚合函数进行数据统计时,有时候需要根据不同的条件对数据进行
计算。CASE WHEN语句就提供了在聚合函数中进行条件计算的能力。例
如,我们要统计每个部门中工资超过平均工资的员工数量,可以使用如下
查询语句:
SELECT department,
COUNT(CASE WHEN salary > (SELECT AVG(salary) FROM
employees) THEN 1 END) AS above_avg_count
FROM employees
GROUP BY department;
通过以上查询语句,我们可以根据条件`salary > 平均工资`来计算每个部
门中工资超过平均工资的员工数量,并返回结果。
3. WHERE子句中的条件过滤
在WHERE子句中,有时候需要根据不同的条件对数据进行过滤,CASE
WHEN语句就提供了在WHERE子句中进行条件过滤的能力。例如,我
们要查询员工表中工资大于10000并且根据不同的岗位进行筛选,可以使
用如下查询语句:
SELECT *
FROM employees
WHERE salary > 10000
AND (CASE WHEN job_title = 'Engineer' THEN 1
WHEN job_title = 'Manager' THEN 2
ELSE 3
END) > 1;
通过以上查询语句,我们可以根据条件`job_title = 'Engineer'`和`salary >
10000`对员工进行筛选,并返回结果。
CASE WHEN语句的嵌套使用
CASE WHEN语句可以进行嵌套使用,以实现更复杂的条件逻辑。例如,
假设我们要统计每个部门中工资属于三个等级之一的员工数量,可以使用
如下查询语句:
SELECT department,
SUM(CASE WHEN salary < 5000 THEN 1
WHEN salary >= 5000 AND salary < 10000 THEN
2
ELSE 3
END) AS salary_level_count
FROM employees
GROUP BY department;
通过以上查询语句,我们可以根据条件`salary < 5000`、`salary >= 5000
AND salary < 10000`和`salary >= 10000`对员工进行分级,并统计每个
部门中各个工资等级的员工数量。
总结
通过本文的讲解,我们了解了CASE WHEN语句的基本语法和常见应用
场景。CASE WHEN语句不仅可以用于列转换和条件计算,还可以在
WHERE子句中进行条件过滤,以满足不同的查询需求。另外,CASE
WHEN语句还可以进行嵌套使用,以实现更复杂的条件逻辑。在实际应用
中,灵活运用CASE WHEN语句可以帮助我们高效地处理和转换数据,
提高查询分析的效率。


发布评论