题解 | #统计复旦用户8月练题情况#
统计复旦用户8月练题情况
https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3
SELECT up.device_id AS "device_id", up.university AS "university", COUNT(if(month(qpd.date) = 8,1,null)) AS 'question_cnt', # 对于count,任何值都会计数,只有null值不会计数 COUNT(if(qpd.result = 'right' AND month(qpd.date) = 8 ,1,null)) AS 'right_question_cnt' FROM user_profile up LEFT JOIN question_practice_detail qpd ON up.device_id = qpd.device_id WHERE up.university = '复旦大学' GROUP BY up.university, up.device_id; # 为什么使用左连接:因为有的学生没有答题,也要列出 # 为什么不在where条件中过滤时间:因为这样会将没有答题的学生的信息全部过滤掉