题解 | #统计复旦用户8月练题情况#
统计复旦用户8月练题情况
https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3
select a.device_id, a.university, count(b.question_id) question_cnt, sum(if (result = 'right', 1, 0)) right_question_cnt from user_profile a left join question_practice_detail b on a.device_id = b.device_id and month (b.date) = 8 where a.university = '复旦大学' group by a.device_id
易错点有一下几个
- month的判断要放在on的联查后,如果放在where后的话,八月份答题数量为0的用户就会查不出来
- count不能count(*),如果count(*),八月份没做题的人也会判断为做了一提,要使用count(b.question_id)
- 判断正确数量使用sum(if())的组合