校招算法笔面试 | SQL笔试面试编程题-计算25岁以上和以下的用户数量

题目

题目链接

题目解析

题目描述

运营团队希望将用户按照年龄划分为两个年龄段: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 语句实现自定义排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值