一篇文章带你了解 SQL 之 CASE WHEN 用法详解
CASE WHEN 简介
在 SQL 中,CASE WHEN 语句用于根据指定的条件执行不同的操作。它类似于程序中的 if-else 语句,对于不同的条件分别执行不同操作。
CASE WHEN 语句包括以下几个部分:
CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
ELSE default_result
END
其中 condition_1
, condition_2
为不同的条件,可以是列名或者表达式;result_1
, result_2
为不同条件满足时的返回结果;default_result
为所有条件均不满足时的默认返回结果。
CASE WHEN 示例
以下是两个使用 CASE WHEN 的示例。
示例一
假设我们有一个学生成绩表,其中包含学生的姓名、数学成绩和语文成绩。我们希望根据这些成绩计算每个学生的总分,并根据总分的不同等级分类。具体来说,总分在 90 分以上为 A 级,80 分以上为 B 级,70 分以上为 C 级,60 分以上为 D 级,60 分以下为不及格。
以下是 SQL 查询语句:
SELECT
name,
math,
chinese,
math + chinese AS total_score,
CASE
WHEN math + chinese >= 90 THEN 'A'
WHEN math + chinese >= 80 THEN 'B'
WHEN math + chinese >= 70 THEN 'C'
WHEN math + chinese >= 60 THEN 'D'
ELSE '不及格'
END AS level
FROM
score_table;
这里使用了 CASE WHEN 语句来计算每个学生的总分和等级。math + chinese
表示该学生的总分,根据不同的总分区间返回不同的等级。
示例二
假设我们有一个订单表,其中包含订单编号、下单时间和订单状态。对于已取消的订单,我们希望在查询结果中显示为“已取消”,对于未取消的订单,我们希望显示为“未取消”。
以下是 SQL 查询语句:
SELECT
order_id,
order_time,
CASE
WHEN order_status = '已取消' THEN '已取消'
ELSE '未取消'
END AS status
FROM
order_table;
这里使用了 CASE WHEN 语句来判断订单是否已取消。order_status = '已取消'
表示订单状态为“已取消”,返回“已取消”,否则返回“未取消”。
总结
通过以上两个示例,我们可以看出 CASE WHEN 语句对于根据不同条件返回不同结果非常方便。CASE WHEN 语句在复杂的查询语句中也非常常见,可以帮助我们快速清晰地编写 SQL 语句。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你了解SQL之CASE WHEN用法详解 - Python技术站