【MYSQL例题】
1、【出处:牛客网】题目:运营想要了解每个学校答过题的用户平均答题数量情况,请取出数据
用户信息表 user_profile:其中device_id指终端编号(认为每个用户有唯一的一个终端),gender指性别,age指年龄,university指用户所在的学校,gpa是该用户平均学分绩点,active_days_within_30是30天内的活跃天数
答题情况明细表 question_practice_detail:其中question_id是题目编号,result是答题结果
解:
2、【出处:牛客网】题目:运营想要计算每个学校用户不同难度下的用户平均答题题目数情况,请你取出相应数据
用户信息表 user_profile:
题库练习明细表 question_practice_detail:
题目难度表:question_detail
解:
实际输出:
北京大学|hard|1.0000
复旦大学|easy|1.0000
复旦大学|medium|1.0000
山东大学|easy|4.5000
山东大学|medium|3.0000
浙江大学|easy|5.0000
浙江大学|medium|2.0000
3、【出处:牛客网】题目:现在运营想要分别查看学校为山东大学或者性别为男性的用户的device_id、gender、age和gpa数据,请取出相应结果,结果不去重
user_profile 表:
解:
实际输出:
5432|male|25|3.8
2131|male|28|3.3
2138|male|21|3.4
3214|male|None|4.0
5432|male|25|3.8
2131|male|28|3.3
4321|male|28|3.6
扩展:如果是要求结果去重,则应该为:
实际输出:
5432|male|25|3.8
2131|male|28|3.3
2138|male|21|3.4
3214|male|None|4.0
4321|male|28|3.6
4、【出处:牛客网】题目:现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量(注:age为null 也记为 25岁以下)
user_profile 表:
解法1:使用 union
解法2:使用 IF 函数
解法3:使用 CASE
实际输出:
25岁以下|4
25岁及以上|3
5、【出处:牛客网】题目:现在运营想要将用户划分为20岁以下,20-24岁,25岁及以上三个年龄段,分别查看不同年龄段用户的明细情况,请取出相应数据。(注:若年龄为空请返回其他)
user_profile 表:
解:
实际输出:
2138|male|20-24岁
3214|male|其他
6543|female|20-24岁
2315|female|20-24岁
5432|male|25岁及以上
2131|male|25岁及以上
4321|male|25岁及以上
6、【出处:牛客网】题目:现在运营想要计算出2021年8月每天用户练习题目的数量,请取出相应数据
question_practice_detail 表:
解:
其中的 WHERE 条件还可以写成如下:
或者如下:
实际输出:
13|5
14|2
15|3
16|1
18|1