牛客SQL练习详解 04:多表查询
- 1、子查询
- sql21 浙江大学用户题目回答情况
- 2、链接查询
- sql22 统计每个学校的答过题的用户的平均答题数
- sql23 统计每个学校各难度的用户平均刷题数
- sql24 统计每个用户的平均刷题数
- 3、组合查询
- sql25 查找山东大学或者性别为男生的信息
叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
1、子查询
sql21 浙江大学用户题目回答情况
题目:
现在运营想要查看所有来自浙江大学的用户题目回答明细情况,
请你取出相应数据
select
q.device_id,
q.question_id,
q.result
from question_practice_detail q
join user_profile u
on q.device_id = u.device_id
where u.university='浙江大学'
# select device_id, question_id, result from question_practice_detail where device_id in (select device_id from user_profile where university = '浙江大学')
2、链接查询
sql22 统计每个学校的答过题的用户的平均答题数
运营想要了解每个学校答过题的用户平均答题数量情况,
请你取出数据。
select university,
round(count(q.result)/count(distinct(q.device_id)),4) as avg_answer_cnt
from question_practice_detail q
left join user_profile u
on q.device_id = u.device_id
# on q.university=u.university
group by university
sql23 统计每个学校各难度的用户平均刷题数
题目:
运营想要计算一些参加了答题的不同学校、不同难度的用户平均答题量,
请你写SQL取出相应数据
法1:
select
university,
difficult_level,
round(count(qpd.result)/count(distinct(qpd.device_id)),4) as avg_answer_cnt
from question_practice_detail qpd
left join user_profile u
on qpd.device_id=u.device_id
right join question_detail qd
on qpd.question_id=qd.question_id
# group by university
group by university, qd.difficult_level
法2:
select
university,
difficult_level,
round(count(qpd.result)/count(distinct(qpd.device_id)),4) as avg_answer_cnt
from
question_practice_detail qpd, #注意不要缺少逗号
user_profile u,
question_detail qd
where qpd.device_id=u.device_id and qpd.question_id=qd.question_id
group by university, difficult_level
sql24 统计每个用户的平均刷题数
题目:
运营想要查看参加了答题的山东大学的用户在不同难度下的平均答题题目数,
请取出相应数据
select
u.university,
qd.difficult_level,
round(count(qpd.result)/count(distinct(qpd.device_id)),4)
as avg_answer_cnt
from
user_profile u,
question_practice_detail qpd,
question_detail qd
where u.device_id=qpd.device_id
and qpd.question_id=qd.question_id
and university='山东大学'
#and u.university='山东大学'
group by u.university, qd.difficult_level
# having u.university='山东大学'
3、组合查询
sql25 查找山东大学或者性别为男生的信息
题目:
现在运营想要分别查看学校为山东大学或者性别为男性的用户的
device_id、gender、age和gpa数据,
请取出相应结果,结果不去重。
select device_id, gender, age, gpa
from user_profile
# where university='山东大学' or gender='male' 错误答案
where university='山东大学'
#Union all:对两个结果集进行并集操作,包括重复行,不进行排序;
union all
select device_id, gender, age, gpa
from user_profile
where gender='male'
Ending!
更多课程知识学习记录随后再来吧!
就酱,嘎啦!
注:
人生在勤,不索何获。