题目解析
题目描述
运营团队希望将用户按照年龄划分为两个年龄段:25岁以下和25岁及以上。同时,需要统计每个年龄段的用户数量。需要注意的是,年龄(age)为 NULL 的用户也应被归类为25岁以下。
SQL 代码
-- 选择并划分年龄段,统计每个年龄段的用户数量
SELECT
CASE
WHEN age < 25 OR age IS NULL THEN '25岁以下'
ELSE '25岁及以上'
END AS age_cut,
COUNT(*) AS number
FROM
user_profile
GROUP BY
age_cut
ORDER BY
CASE
WHEN age_cut = '25岁以下' THEN 1
ELSE 2
END;
代码解释
-
SELECT子句:- 使用
CASE WHEN语句来判断age字段:- 如果
age小于25岁或为NULL,则将其归类为'25岁以下'。 - 否则,归类为
'25岁及以上'。
- 如果
- 为划分后的结果命名为
age_cut。 - 使用
COUNT(*)统计每个年龄段的用户数量,并命名为number。
- 使用
-
FROM子句:- 指定数据来源为
user_profile表。
- 指定数据来源为
-
GROUP BY子句:- 按照划分后的
age_cut进行分组,以便统计每个组的用户数量。
- 按照划分后的
-
ORDER BY子句:- 根据需求,将
'25岁以下'的结果排在前面,'25岁及以上'的结果排在后面。 - 通过
CASE WHEN语句实现自定义排序。
- 根据需求,将

京公网安备 11010502036488号