牛客网刷题学习SQL

SQL21 浙江大学用户题目回答情况

描述
题目:现在运营想要查看所有来自浙江大学的用户题目回答明细情况,请你取出相应数据

示例 :question_practice_detail
id device_id question_id
result
1 2138 111 wrong
2 3214
112 wrong
3 3214
113 wrong
4 6543 114 right
5 2315 115 right
6 2315 116 right
7 2315 117 wrong
第一行表示:id为1的用户的常用信息为使用的设备id为2138,在question_id为111的题目上,回答错误

最后一行表示:id为7的用户的常用信息为使用的设备id为2135,在question_id为117的题目上,回答错误

示例: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.0 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 female 26 复旦大学 3.6 9 6 52
第一行表示:id为1的用户的常用信息为使用的设备id为2138,性别为男,年龄21岁,北京大学,gpa为3.4在过去的30天里面活跃了7天,发帖数量为2,回答数量为12
。。。
最后一行表示:id为7的用户的常用信息为使用的设备id为4321,性别为男,年龄26岁,复旦大学,gpa为3.6在过去的30天里面活跃了9天,发帖数量为6,回答数量为52

根据示例,你的查询应返回以下结果,查询结果根据question_id升序排序:

解释:
根据题目的数据只有1个浙江大学的用户,那么把浙江大学这个用户所有答题数据查询出来就行

使用关键字INNER JOIN ON和left join on

SELECT qpd.device_id, qpd.question_id, result
FROM question_practice_detail qpd
inner JOIN user_profile up ON qpd.device_id = up.device_id and up.university="浙江大学"
order by qpd.question_id
SELECT qpd.device_id, qpd.question_id, result
FROM question_practice_detail qpd
left JOIN user_profile up ON qpd.device_id = up.device_id
where up.university = "浙江大学" 
order by qpd.question_id

最后总结一下:
关键字INNER JOIN ON和left join on的区别
INNER JOIN 和 LEFT JOIN 都是 SQL 中的 JOIN 类型,它们都可以用于连接两个表。它们之间的区别在于:

  • INNER JOIN 只返回两个表中联结字段相等的行。所以on后面可以添加多个条件
  • LEFT JOIN 返回包括左表中的所有记录和右表中联结字段相等的记录,如果右表中没有匹配的记录,则对应的字段值为 NULL。on后面只能写左表和右表关联的条件

where:用来筛查行 ,在查询执行前应用, having:用来筛查组,在查询执行后应用

猜你喜欢

转载自blog.csdn.net/qq_53037676/article/details/130919530