题解 | #查看不同年龄段的用户明细#

查看不同年龄段的用户明细

http://www.nowcoder.com/practice/ae44b2b78525417b8b2fc2075b557592

题意明确:

将用户划分为20岁以下,20-24岁,25岁及以上三个年龄段,分别查看不同年龄段用户的明细情况,年龄为空输出为其他


问题分解:

  • 限定条件:无;
  • 划分年龄段:数值条件判断,可以用多重if,不过更方便的是用case when [expr] then [result1]...else [default] end
  • 附:case when用法

细节问题:

  • 表头重命名:as
  • 输出的段明文在题目描述和输出示例中不一致,以输出示例为准

完整代码:

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
全部评论
这道题为什么不用对age_cut进行分组呢,上一道题进行了分组
4 回复 分享
发布于 2022-02-26 15:52
select device_id, gender, case when age<20 then '20岁以下' when age>=20 then '20-24岁' when age>=25 then '25岁及以上' else '其他' end as age_cut from user_profile 仅仅把标准答案顺序变成升序,结果就错误,大佬求解答。
3 回复 分享
发布于 2022-09-16 21:38 山西
最后不用group by device_id吗
3 回复 分享
发布于 2022-03-21 21:23
请问为啥我把case语句括起来就不对了呢?
1 回复 分享
发布于 2022-10-06 22:39 北京
when age between 20 and 24 then '20-24岁','20-24岁'不能这样写吗?, when age>=20 then '20-24岁'这样写跟25岁及以上不会冲突吗?
1 回复 分享
发布于 2022-03-20 18:42
可以用is null表示为空
点赞 回复 分享
发布于 2024-03-30 10:55 四川
不用select age_cut的原因是什么,跟语句执行顺序有关吗
点赞 回复 分享
发布于 2022-10-06 13:48 广东
请教一下,case中的语句顺序,为什么不能先when age<20,再when age<25,再age>24,eles 其他。这样写输出结果都是“其他”。
点赞 回复 分享
发布于 2022-08-21 11:01 山西
select device_id,gender,"20岁以下" as age_cut from user_profile where age<20 union all select device_id,gender,"其他" as age_cut from user_profile where age is null union all select device_id,gender,"20-24岁" as age_cut from user_profile where age<=24 and age>=20 union all select device_id,gender,"25岁及以上" as age_cut from user_profile where age>=25 我用联合查询语句,但是顺序就是很难弄对 ,有高手指点一下吗?
点赞 回复 分享
发布于 2022-05-10 16:36
有两种解法,看我的回答
点赞 回复 分享
发布于 2022-02-09 15:36
不一致的原因是少了个20岁以下的阶段
点赞 回复 分享
发布于 2021-10-30 13:22

相关推荐

评论
160
26
分享

创作者周榜

更多
牛客网
牛客企业服务