当我们处理SQL查询时,有时候我们需要对数据进行分类和排序。SQL中Case When语法就是为了解决这个问题而存在的。它可以将数据按照我们指定的条件进行分类,并进行相应的处理,还可以在查询语句中进行逻辑控制。下面我将详细讲解Case When语法的使用方法。
基础语法
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
...
ELSE 结果n
END
在这个基本语法中,我们可以设置多个WHEN条件以及对应的结果。ELSE结构是可选的,如果没有ELSE,则在未匹配任何WHEN条件时返回NULL。
示例1:根据成绩打分
假设我们有一张学生成绩表,需要根据成绩来打分,得分规则如下:
- 成绩在90分以上,得A级
- 成绩在80-90之间,得B级
- 成绩在70-80之间,得C级
- 成绩在60-70之间,得D级
- 成绩在60分以下,得E级
我们可以使用Case When语法来实现:
SELECT
name,
(CASE
WHEN grade >= 90 THEN 'A'
WHEN grade >= 80 AND grade < 90 THEN 'B'
WHEN grade >= 70 AND grade < 80 THEN 'C'
WHEN grade >= 60 AND grade < 70 THEN 'D'
ELSE 'E'
END) AS grade_level
FROM
score;
这个查询将会返回一个包含学生姓名和对应等级的表格,如下所示:
姓名 | 等级 |
---|---|
张三 | B |
李四 | A |
王五 | C |
赵六 | D |
钱七 | E |
示例2:根据销售额进行奖励
假设我们有一张销售数据表,需要给销售额达到一定数值的销售人员发放奖金。奖励规则如下:
- 销售额在1000以上,奖励200元
- 销售额在500-1000之间,奖励100元
- 销售额在200-500之间,奖励50元
我们可以使用Case When语法来实现:
SELECT
name,
sales,
CASE
WHEN sales >= 1000 THEN 200
WHEN sales >= 500 AND sales < 1000 THEN 100
WHEN sales >= 200 AND sales < 500 THEN 50
ELSE 0
END AS bonus
FROM
sales_data;
这个查询将会返回一个包含销售人员姓名、销售额以及对应奖励金额的表格,如下所示:
姓名 | 销售额 | 奖励金额 |
---|---|---|
张三 | 1000 | 200 |
李四 | 800 | 100 |
王五 | 300 | 50 |
赵六 | 1200 | 200 |
钱七 | 100 | 0 |
在这两个示例中,我们可以看到Case When语法的使用非常灵活,可以根据不同的场景进行灵活配置,实现我们想要的目标。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:sql 中 case when 语法使用方法 - Python技术站