目录
- 1. 基础描述
- 2. 用法举例
- 2.1 基础使用
- 2.1.1 方式1
- 2.1.2 方式 2
- 2.2 进行分组
- 2.3 分组练习举例
1. 基础描述
- 目的:在SQL语句中添加判断条件,就要用到CASE WHEN THEN END
- 用法:类似于java里面的switch语句,一组CASE WHEN THEN END就是一条完整的字段,多条之间要使用逗号分隔开来;
- 语法结构:
CASE 字段
WHEN 条件1 THEN 做事赋值
WHEN 条件2 THEN 做事赋值
ELSE
xxx
END xxx;// 给结果字段重新起名
CASE
WHEN 字段判断和条件1的关系 THEN 做事赋值
WHEN 字段判断和条件2的关系 THEN 做事赋值
ELSE
xxx
END xxx;
2. 用法举例
2.1 基础使用
2.1.1 方式1
数据库 student
使用sql语句:
SELECT
sname,
sage,
ssex,
CASE
WHEN ssex = '1' THEN '男'
WHEN ssex = '2' THEN '女'
ELSE '其他'
END as sex
FROM
student
查询结果:
2.1.2 方式 2
sql语句
SELECT
sname,
sage,
ssex,
CASE ssex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他'
END as sex
FROM
student
查询结果与上述一致
2.2 进行分组
- 原数据库:
- 目的:按照国家进行男女数量分别统计
- sql语句:
SELECT
country,
SUM ( CASE WHEN sex = '1' THEN amount ELSE 0 END ) AS 男,
SUM ( CASE WHEN sex = '2' THEN amount ELSE 0 END ) AS 女
FROM
world
GROUP BY
country
- 统计结果
2.3 分组练习举例
- 数据库:国家
- 目的:统计亚洲、北美洲以及其他州的人口数量
- 结果概览
- sql语句
SELECT
SUM(population) AS 人口,
CASE
WHEN country in('中国','印度','日本') THEN '亚洲'
WHEN country in('美国','加拿大','墨西哥') THEN '北美洲'
ELSE '其他'
END AS 州
FROM
国家
GROUP BY
CASE
WHEN country in('中国','印度','日本') THEN '亚洲'
WHEN country in('美国','加拿大','墨西哥') THEN '北美洲'
ELSE '其他'
END
- 结果