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:用来筛查组,在查询执行后应用