题解 | 统计复旦用户8月练题情况
统计复旦用户8月练题情况
https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3
select up.device_id,university, count(question_id) as question_cnt, count(if(qpd.result='right', 1, null)) as right_question_cnt from user_profile as up left join question_practice_detail as qpd on qpd.device_id = up.device_id and month(qpd.date) = 8 where up.university = '复旦大学' group by up.device_id
这个代码是从讨论学来的,我尝试过
count(if(qpd.result='right', 1, null))
和sum(if(qpd.result='right', 1, 0))
两个都可以运行。我的理解是,count会把空值null直接按0算人头,而sum需要把空值null赋值为0后才能按照数值进行计算。