描述
题目:现在运营想要将用户划分为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岁及以上 |
具体代码实现:
SELECT device_id,gender,
CASE
WHEN age<20 THEN '20岁以下'
WHEN age BETWEEN 20 AND 24 THEN '20-24岁'
WHEN age>=25 THEN '25岁及以上'
WHEN age IS NULL THEN '其他'
END AS age_cut
FROM user_profile
解题思路:
题目只有一个要求:划分了四个年龄段20岁以下,20-24岁,25岁及以上和其他;需要用到case语法.
补充:
在 SQL 中,CASE
表达式用于根据不同的条件进行分支判断和返回相应的值。以下是一般的CASE
语法形式:
简单CASE
表达式:
CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
-- 可以添加更多的 WHEN 分支
ELSE default_result
END
例如:
查询班级表中的学生的班号、班名、系号和班主任号,并对系号作如下处理:
当系号为1时,显示 “计算机系”;
当系号为2时,显示 “软件工程系”;
当系号为3时,显示 “物联网系”。
SELECT 班号 ,班名,
CASE 系号WHEN 1 THEN '软件工程系'
WHEN 2 THEN '计算机系'
WHEN 3 THEN '物联网系'
END AS 系号,班主任号
FROM 班级表
搜索CASE
表达式:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
-- 可以添加更多的 WHEN 条件和结果
ELSE default_result
END
例如:本题;