SQL27 查看不同年龄段的用户明细
题目描述
题���:现在运营想要将用户划分为20岁以下,20-24岁,25岁及以上三个年龄段,分别查看不同年龄段用户的明细情况,请取出相应数据。(注:若年龄为空请返回其他。)
()示例:user_profile
id | device_id | gender | age | university | gpa | active_days_within_30 | question_cnt | answer_cnt |
1 | 2138 | male | 21 | 北京大学 | 3.4 | 7 | 2 | 12 |
2 | 3214 | male | 复旦大学 | 4 | 15 | 5 | 25 | |
3 | 6543 | female | 20 | 北京大学 | 3.2 | 12 | 3 | 30 |
4 | 2315 | female | 23 | 浙江大学 | 3.6 | 5 | 1 | 2 |
5 | 5432 | male | 25 | 山东大学 | 3.8 | 20 | 15 | 70 |
6 | 2131 | male | 28 | 山东大学 | 3.3 | 15 | 7 | 13 |
7 | 4321 | male | 26 | 复旦大学 | 3.6 | 9 | 6 | 52 |
根据示例,你的查询应返回以下结果:
()device_id | gender | age_cut |
2138 | male | 20-24岁 |
3214 | male | 其他 |
6543 | female | 20-24岁 |
2315 | female | 20-24岁 |
5432 | male | 25岁及以上 |
2131 | male | 25岁及以上 |
4321 | male | 25岁及以上 |
分析思路
难点:
1.如何根据条件输出内容
一个条件2个结果可以使用if、case when;多个条件多个结果可以使用case when,还有if嵌套
(1)分别查看这两个年龄段用户数量
[使用]:if()或者case when;group by
求解代码
方法一
条件函数:if()
1 2 3 4 5 6 7 | select device_id, gender, if(age =25, '25岁及以上', if(age between 20 and 24, '20-24岁', '其他'))) as age_cut from user_profile |
方法二
条件函数:case when
1 2 3 4 5 6 7 8 9 10 | select device_id, gender, (case when age = 20 and age = 25 then '25岁及以上' else '其他' end) as age_cut from user_profile |
The End