题解 | #每个题目和每份试卷被作答的人数和次数#

每个题目和每份试卷被作答的人数和次数

https://www.nowcoder.com/practice/203d0aed8928429a8978185d9a03babc

SELECT * FROM
(
SELECT exam_id tid,
    COUNT(DISTINCT uid) uv,
    COUNT(start_time) pv
FROM exam_record
GROUP BY tid
ORDER BY uv DESC, pv DESC
) m

UNION ALL

SELECT * FROM
(
SELECT question_id tid,
    COUNT(DISTINCT uid) uv,
    COUNT(score) pv
FROM practice_record
GROUP BY tid
ORDER BY uv DESC, pv DESC
) n

找每个题目和每份试卷被作答的人数和次数

两张表,试卷表和练习题表,要做的就是取这两张表的对应数据:试卷、练习题id;作答人数(记得去重);作答次数(指的是做了就算,不管有没有成绩)

看到对两张表同时取数,第一时间想到UNION (ALL),这个关键词将两个或多个查询竖着拼接在一起,stack。

不加all会自动去重,加就不去。

但是如果想要分别排序,单纯的这样还不够,因为不对查询加()的话,只能有一个排序语句,就不能分别排序。

所以要将这两个查询包装起来,才能独立排序。(难点和重点)

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
xdm怎么说 要被拷打了 担心是KPI
丹田:面就完了,就当日薪四位数的大佬免费给给你面试。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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