题解 | 统计复旦用户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后才能按照数值进行计算。
