17. 题目:现在运营想要看一下男性用户有多少人以及他们的平均gpa是多少,用以辅助设计相关活动,请你取出相应数据。
select
count(gender),avg(gpa)
from user_profile
where gender='male'
要同时输入数量和平均值的结果,要把这两个命令放到同一行,否则结果错误。
18.题目:现在运营想要对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。
用户信息表:user_profile
30天内活跃天数字段(active_days_within_30)
发帖数量字段(question_cnt)
回答数量字段(answer_cnt)
select
gender,university,
count(device_id) as user_num,
avg(active_days_within_30) as avg_active_days,
avg(question_cnt) as avg_question_cnt
from user_profile
group by gender,university
19.题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。
SELECT
university,
avg(question_cnt) as avg_question_cnt,
avg(answer_cnt) as avg_answer_cnt
from user_profile
group by university
having avg_question_cnt<5 OR avg_answer_cnt<20
“Where” 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。
“Having”是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。分组后一般用Having。它筛选分组后的各组数据。就是如果之前用AVG,SUM,COUNT这类聚合函数后,原数据改变,HAVING可以筛选改变后的数据。
HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后对组记录进行筛选。
20.题目:现在运营想要查看不同大学的用户平均发帖情况,并期望结果按照平均发帖情况进行升序排列,请你取出相应数据。
SELECT
university,
avg(question_cnt) AS avg_question_cnt
from user_profile
group by university
order by avg_question_cnt
先按大学分组后。最后升序排列。最后两行语句不要搞反。
21 题目:现在运营想要查看所有来自浙江大学的用户题目回答明细情况,请你取出相应数据
select
qpd.device_id,
qpd.question_id,
qpd.result
from question_practice_detail as qpd
INNER JOIN user_profile as up
on qpd.device_id = up.device_id
where up.university='浙江大学'