题解 | #统计复旦用户8月练题情况#

统计复旦用户8月练题情况

https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3

with 
uq22 as(
    SELECT uq1.device_id, uq1.university, uq1.question_id,uq1.result,uq1.date, 
       CASE WHEN uq1.result = 'right' THEN 1 ELSE 0 END AS right_count
    FROM
    (SELECT u.device_id, university, question_id,result,date 
    FROM user_profile u LEFT JOIN question_practice_detail q
    ON u.device_id = q.device_id AND MONTH(date) = 8
    WHERE university = '复旦大学'
    ) uq1
)


SELECT device_id, university, COUNT(question_id) question_cnt, SUM(right_count)  right_question_cnt
FROM uq22
GROUP BY device_id


小白做了好久才优化简洁了一点,这里关键在于用LEFT JOIN 时要ON u.device_id = q.device_id AND MONTH(date) = 8这样才能保证临时表uq22有那位不在8月份做题的复旦学生出现,只要这个表出来了就随便来了

全部评论

相关推荐

06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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