题目解析

题目描述

运营团队希望将用户按照年龄划分为三个年龄段:20岁以下20-24岁25岁及以上,并分别查看不同年龄段用户的明细情况。需要从 user_profile 表中取出相应的数据。需要注意的是,若年龄为空,请返回其他

SQL 查询

-- 选择并划分年龄段,输出 device_id、gender 和 age_cut
SELECT 
    device_id, 
    gender, 
    CASE 
        WHEN age IS NULL THEN '其他'               -- 年龄为空,归类为其他
        WHEN age < 20 THEN '20岁以下'              -- 年龄小于20岁
        WHEN age BETWEEN 20 AND 24 THEN '20-24岁'    -- 年龄在20至24岁之间
        WHEN age >= 25 THEN '25岁及以上'            -- 年龄大于等于25岁
    END AS age_cut
FROM 
    user_profile

代码解释

  • CASE WHEN 语句
    • WHEN age IS NULL THEN '其他':如果 age 字段为空 (NULL),则将该用户归类为 '其他'
    • WHEN age < 20 THEN '20岁以下':如果 age 小于 20 岁,归类为 '20岁以下'
    • 其他同理
    • END AS age_cut:将上述分类结果命名为 age_cut