题目解析
题目描述
运营团队希望将用户按照年龄划分为两个年龄段: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
语句实现自定义排序。
- 根据需求,将