题解 | #满足条件的用户的试卷完成数和题目练习数#

满足条件的用户的试卷完成数和题目练习数

https://www.nowcoder.com/practice/5c03f761b36046649ee71f05e1ceecbf

SELECT a.uid,exam_cnt,ifnull(question_cnt,0)
FROM (
SELECT distinct(exam_record.uid)
FROM exam_record 
LEFT JOIN examination_info ON examination_info.exam_id =exam_record.exam_id
LEFT JOIN user_info ON user_info.uid = exam_record.uid
WHERE level = 7 and tag='SQL' and difficulty='hard' and score is not null
group by exam_record.uid
having avg(score)>80) a

LEFT JOIN (

SELECT uid,count(submit_time) exam_cnt
FROM exam_record
WHERE YEAR(submit_time) = '2021' and submit_time is not null
group by uid) b ON a.uid =  b.uid

LEFT JOIN (

SELECT uid,count(submit_time) question_cnt
FROM practice_record
WHERE YEAR(submit_time) = '2021' and submit_time is not null
group by uid) c ON c.uid = a.uid

order by exam_cnt ,question_cnt desc

思路:生成三张表进行左连接,三张表分别是:满足要求的uid,考试卷子每个uid的答题次数和练习卷子每个uid的做题次数,以uid表进行左联,当uid为1001,1002 并且另两张表的uid不存在1001或者1002时,左连接可以出现null,以0在结果显示出来。

最开始思路:得到满足要求的uid,在每张表中通过子查询得到uid,和答题次数再将两张表进行连接,会出现当某一张表没有满足要求的uid时结果出现确实,即结果为0的行展示不出来

全部评论

相关推荐

06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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