CASE函数
是一种多分支的函数,可以根据条件列表的值返回多个可能的结果表达式中的一个。 可用在任何允许使用表达式的地方,但不能单独作为一个语句执行。
CASE 测试表达式
WHEN 简单表达式1 THEN 结果表达式1
WHEN 简单表达式2 THEN 结果表达式2
WHEN 简单表达式n THEN 结果表达式n
ELSE 结果表达式n+1
END
按从上到下的书写顺序计算每个WHEN子句的布尔表达式。 返回第一个取值为TRUE的布尔表达式所对应的结果表达式的值。 如果没有取值为TRUE的布尔表达式, 则当指定了ELSE子句时,返回ELSE子句中指定的结果; 如果没有指定ELSE子句,则返回NULL。
例: 1、统计每个班男生和女生的数量各是多少,统计结果的表头为:班号,男生数量,女生数量。
SELECT 班号,
COUNT(CASE WHEN 性别=‘男’ THEN ‘男’ END) 男生数,
COUNT(CASE WHEN 性别=‘女’ THEN ‘女’ END) 女生数
FROM 学生表 GROUP BY 班号
2、判断成绩的等级,85-100为“优”,70-84为“良”,60-69为“及格”,60以下为“不及格”,并统计每一等级的人数。
SELECT
CASE
WHEN GRADE BETWEEN 85 AND 100 THEN '优'
WHEN GRADE BETWEEN 70 AND 84 THEN '良'
WHEN GRADE BETWEEN 60 AND 69 THEN '及格'
ELSE '不及格'
END 等级, COUNT(*) 人数
FROM SC
group by 等级
3、将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量
SELECT
case when age<25 or age is null then '25岁以下'
else '25岁及以上'
end age_cut,count(*) as NUMBER
from user_profile
group by age_cut
|