题解 | #浙江大学用户题目回答情况#

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

http://www.nowcoder.com/practice/55f3d94c3f4d47b69833b335867c06c1

题意明确:

所有来自浙江大学的用户题目回答明细情况


问题分解:

  • 限定条件:来自浙江大学的用户,学校信息在用户画像表,答题情况在用户练习明细表,因此需要通过device_id关联两个表的数据; 方法1:join两个表,用inner join,条件是on up.device_id=qpd.device_id and up.university='浙江大学' 方法2:先从画像表找到浙江大学的所有学生id列表where university='浙江大学',再去练习明细表筛选出id在这个列表的记录,用where in

完整代码:

select qpd.device_id, qpd.question_id, qpd.result
from question_practice_detail as qpd
inner join user_profile as up
on up.device_id=qpd.device_id and up.university='浙江大学'
order by question_id

方法2代码:

select device_id, question_id, result
from question_practice_detail
where device_id in (
    select device_id from user_profile
    where university='浙江大学'
)
order by question_id
全部评论
create or replace view V1 as select university,device_id from user_profile where university='浙江大学'; select q.device_id,question_id,result from question_practice_detail q inner join v1 on v1.device_id=q.device_id;
1 回复 分享
发布于 2022-01-08 18:41
这题不能用创建浙江大学视图来解么?
1 回复 分享
发布于 2022-01-08 18:40
第一种方法是join连接,第二种是select的嵌套
7 回复 分享
发布于 2022-03-09 20:43
法二是属实没想到,还有此妙用,大开眼界。属于是变相的表连接了
5 回复 分享
发布于 2022-09-10 21:01 山西
为了保证浙江大学的完整性,应该用user_profile作为主表去左连接吧?
4 回复 分享
发布于 2022-03-31 15:29
最后还需要ORDER BY 来排升序,大无语,搞了半天
3 回复 分享
发布于 2022-03-09 19:19
为啥不用ID去作为两个表相同的字段去做两个表连接啊,哪位大佬能帮助解答下么
2 回复 分享
发布于 2022-06-25 18:49
select a.device_id,a.question_id,a.result from question_practice_detail a ,user_profile b where a.device_id = b.device_id and b.university = '浙江大学' order by a.question_id ASC;
1 回复 分享
发布于 2023-03-02 15:35 陕西
为什么要order by?不是多此一举吗 题目要求没有排序吧
1 回复 分享
发布于 2023-02-02 21:11 陕西
这个题目描述的不合理,应该用id来连接 id是确定人的 设备id是确定机器的 而题目说的是浙江大学的学生 明显是人,应该用id连接。
1 回复 分享
发布于 2022-12-02 09:39 陕西
帮忙看一下这样能通过,但是为啥不是最优解 SELECT qpd.device_id,qpd.question_id,qpd.result FROM question_practice_detail AS qpd,user_profile AS up WHERE qpd.device_id=up.device_id AND up.university="浙江大学" order by qpd.question_id
点赞 回复 分享
发布于 06-06 20:14 江苏
可惜了只想到了方法二
点赞 回复 分享
发布于 05-31 21:08 广西
为啥我用join就运行不了,加个inner就对了啊,不是默认join就是inner join吗orz
点赞 回复 分享
发布于 04-27 16:25 北京
这题为什么不可以用union来解?
点赞 回复 分享
发布于 03-20 11:11 新疆
看sql必知必会,写的第二种,提交一直错,发现是没审题漏掉了排序和多写了id列
点赞 回复 分享
发布于 02-24 15:59 广东
为什么用device_id作为连接字段呢,为什么不用id做链接呢,我觉得这个题目有歧义啊,而且答案里面的device_id也不知道是哪张表里面的。还是说,从答案来反推是用device_id做连接字段呢?
点赞 回复 分享
发布于 2024-09-01 22:28 北京
关于用id还是device_id: 如果用id当主键连接的话,同一个id在两张表对应的device_id都不相同,那连接之后的表的device_id取哪张表的? 不同的连接方***影响连接后表的device_id字段吗? 诸多不确定因素,有没有大佬一起讨论一下
点赞 回复 分享
发布于 2024-03-07 14:15 广东
select qpd.device_id ,qpd.question_id,qpd.result from user_profile as up inner join question_practice_detail as qpd on qpd.device_id=up.device_id where up.university='浙江大学'
点赞 回复 分享
发布于 2023-10-17 16:57 广东
方法二用的是子查询,很优雅!
点赞 回复 分享
发布于 2023-05-29 16:45 广东
为什么方法一最后要加个order by question_id 我没加提交上去也过了
点赞 回复 分享
发布于 2023-03-09 13:16 浙江

相关推荐

05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求职打法:注意把武大标粗标大 本地你俩不是乱杀
点赞 评论 收藏
分享
牛客773130651号:巨佬,简历模板换成上下的,左右的很烦,hr看着不爽。。。科大随便乱杀,建议能保研就保研,不行也得考一下 ,985硕去干算法,比开发强多了。开发许多双非都能搞,学历优势用不上,算法有门槛
点赞 评论 收藏
分享
评论
562
109
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务