题解 | 统计复旦用户8月练题情况
统计复旦用户8月练题情况
https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3
SELECT
a.device_id,
a.university,
SUM(CASE WHEN b.question_id IS NULL THEN 0 ELSE 1 END) question_cnt,
SUM(CASE WHEN b.result = 'right' THEN 1 ELSE 0 END) right_question_cnt
FROM
user_profile a
LEFT JOIN question_practice_detail b ON a.device_id = b.device_id AND b.date LIKE '2021-08%'
where a.university = '复旦大学'
GROUP BY
a.device_id, a.university;
考查的点比较多
1、8月份没有练习过的用户也是显示,要使用LEFT JOIN,保持用户信息在
2、汇总做题数量,要使用分组求和
3、没有做练习过的要显示数据0,考查的是Case when语句
不管是用子查询分组后再left join,还是直接left join,应该都要使用到以上的知识点

