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

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

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

# 思路:
# 查询完成高难度SQL得分平均值大于80分且7级的用户
# 统计该用户2021年试卷完成次数和题目总练习次数
# 由于有些用户完成试卷,但是没有练习;有些用户练习了但是没有完成试卷,因此用左右连接后union拼起来
select * from (
select t5.uid,ifnull(t5.exam_cnt,0) as exam_cnt
    ,ifnull(t5.question_cnt,0) as question_cnt 
from 
(select t1.*,t2.question_cnt from  (
select e3.uid,count(e3.submit_time) as exam_cnt from 
exam_record as e3 where year(e3.submit_time)= 2021 
    group by e3.uid) t1
left join (
select e4.uid,count(e4.submit_time) as question_cnt from 
practice_record as e4 where year(e4.submit_time)= 2021 
group by e4.uid )t2 on t1.uid=t2.uid ) t5
union 
 select t3.*,t4.question_cnt from (
select e3.uid,count(e3.submit_time) as exam_cnt from 
exam_record as e3 where year(e3.submit_time)= 2021 
    group by e3.uid ) t3 
right join (
select e4.uid,count(e4.submit_time) as question_cnt from 
practice_record as e4 where year(e4.submit_time)= 2021 
group by e4.uid )t4 on t3.uid=t4.uid ) t6 
where t6.uid in 
 (
select e1.uid from exam_record as e1
left join examination_info as e2 
on e1.exam_id=e2.exam_id 
left join user_info as u1 on e1.uid=u1.uid 
where e2.tag='SQL' and e2.difficulty = 'hard' 
and u1.level = 7 
group by e1.uid having avg(e1.score)  >= 80 ) order by t6.exam_cnt asc,t6.question_cnt desc 

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务