题解 | #统计复旦用户8月练题情况#
统计复旦用户8月练题情况
https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3
select up.device_id,university,sum(if (question_id > 1,1,0)) as question_cnt,sum(if(result='right',1,0)) as right_question_cnt from user_profile as up left join ( select device_id,question_id,result from question_practice_detail where month(date)='08') as qpd on qpd.device_id = up.device_id where university = '复旦大学' group by up.device_id
写的有点复杂,
主要就是先对回答问题的表进行处理,获得8月份答题数据,
之后通过左连接与学生信息表进行结合,
最后查看到底需要那列的数据,再对列进行处理。
使用if语句可以很好的处理None数据,即没有作答过的数据