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

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

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

SELECT
    u.device_id, 
    u.university, 
    COALESCE(COUNT(q.result), 0) AS question_cnt,
    COALESCE(SUM(CASE WHEN q.result = 'right' THEN 1
                ELSE 0 END),
				0) AS right_question_cnt
FROM user_profile u
LEFT JOIN question_practice_detail q 
ON u.device_id = q.device_id
    AND DATE_FORMAT(q.date, '%Y-%m') = '2021-08'
WHERE u.university = '复旦大学'
GROUP BY u.device_id,u.university
ORDER BY u.device_id ASC;

有两个重点:

1.用COALESCE(·, 0)将不存在答题记录的用户记为0,如果不加的话会出现NULL值;

2.为了保留全部目标用户(即使无记录),要用user_profile LEFT JOIN question_practice_detail。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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