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

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

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

构建临时表:筛选满足的用户信息 + 用户完成试卷数 + 用户完成试题数

最后要注意需要 左连接 + ifnull的处理

with t1 as (
#先筛选出满足的用户
    select
        ui.uid
    from examination_info ei join exam_record er 
        on ei.exam_id=er.exam_id and ei.tag='SQL' and ei.difficulty='hard'
    join user_info ui on ui.uid=er.uid and ui.level=7
    where substr(er.submit_time,1,10) between '2021-01-01' and '2021-12-31'
    group by ui.uid
    having(avg(er.score)>80)
)
,t2 as (
#分别统计满足条件用户的试卷数和答题数
    #试卷数
    select
        t1.uid
        ,count(er.exam_id) as exam_cnt
    from t1 join exam_record er using(uid)
    where substr(er.submit_time,1,10) between '2021-01-01' and '2021-12-31'
    group by t1.uid
)
,t3 as (
#分别统计满足条件用户的试卷数和答题数
    #题目数
        select
        t1.uid
        ,count(pr.question_id) as question_cnt
    from t1 join practice_record pr using(uid)
    where substr(pr.submit_time,1,10) between '2021-01-01' and '2021-12-31'
    group by t1.uid
)
SELECT
    t2.uid
    ,t2.exam_cnt
    ,ifnull(t3.question_cnt,0) as question_cnt
from t2 left join t3 using(uid)
order by t2.exam_cnt,question_cnt desc
全部评论

相关推荐

06-14 19:09
门头沟学院 Java
darius_:给制造业搞的,什么物料管理生产管理,设备管理点检,最最关键的就是一堆报表看板。个人觉得没啥技术含量都是些基本的crud,但是业务很繁琐那种
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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