select
device_id,
gender,
case
when age >= 25 then '25岁及以上'
when age >= 20 then '20-24岁'
when age < 20 then '20岁及以下'
else '其他'
end as age_cut
from user_profile
1. 选择字段
sql
SELECT
device_id, -- 用户设备ID
gender, -- 用户性别
CASE ... -- 根据年龄计算的年龄段分类(重点)
device_id:用户设备的唯一标识符。gender:用户性别(如male或female)。CASE表达式:动态生成年龄段分类,逻辑如下:
2. 年龄段划分逻辑
sql
CASE
WHEN age >= 25 THEN '25岁及以上' -- 年龄≥25
WHEN age >= 20 THEN '20-24岁' -- 20≤年龄≤24
WHEN age < 20 THEN '20岁以下' -- 年龄<20
ELSE '其他' -- 年龄为NULL或非法值
END AS age_cut
- 执行顺序:先检查 age >= 25,满足则归为 “25 岁及以上”。否则检查 age >= 20(此时隐含 age < 25),归为 “20-24 岁”。再检查 age < 20,归为 “20 岁以下”。若以上条件均不满足(如 age 为 NULL),归为 “其他”。
- 关键点:条件顺序很重要:若先判断 age >= 20,则 age=25 会被错误归为 “20-24 岁”。处理 NULL 值:age 为 NULL 时,所有 WHEN 条件均不成立,触发 ELSE。
3. 数据源
sql
FROM user_profile
- 从
user_profile表中查询数据,该表应包含device_id、gender和age字段。

京公网安备 11010502036488号