题解 | #统计复旦用户8月练题情况#
统计复旦用户8月练题情况
https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3
select device_id,university,count(question_id) ques_count, count(if(result = 'right','right',null)) right_count from( select up.device_id, up.university, qpd.question_id, qpd.result from user_profile up left join question_practice_detail qpd on up.device_id = qpd.device_id and month(qpd.date) = 8 where up.university = '复旦大学') t group by t.device_id,t.university
对于未答题的用户也要统计,因此在user_profile和答题详情表关联时采用左外连接,保留无答题记录的用户信息。
关联后对主表学校进行筛选,外表通过连接条件筛选是8月份的数据,如果是指定2021年8月的话再加条件。
分组自然就是根据device_id和学校,也可以只根据device_id分组,因为学校是一样的。
答题总数没有去重,每个答题记录都算一次,正确次数的计算通过id语句来处理。