题意:
复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况
分析:
- 由题意,统计8月份的数据,知:month(date)=8
- 由总题目数,知:count(question_id) 或者 sum(case when result is not null then 1 else 0 end)
- 由正确的题目数,知: sum(if (result="right",1,0)) 或者 sum(case when result='right' then 1 else 0 end)
- 限制条件:由题意查询复旦大学的每个用户:
where university='复旦大学'
group by up.device_id
代码:
- 法一:
select up.device_id,
up.university,
count(qpd.question_id) as question_cnt,
sum(if (qpd.result="right",1,0)) as right_question_cnt
from user_profile as up
left join question_practice_detail as qpd
on up.device_id=qpd.device_id and month(qpd.date)=8
where up.university='复旦大学'
group by up.device_id
- 法二:
select up.device_id,
up.university,
sum(case when qpd.result is not null then 1 else 0 end) as question_cnt,
sum(case when qpd.result='right' then 1 else 0 end) as right_question_cnt
from user_profile as up
left join question_practice_detail as qpd
on up.device_id=qpd.device_id and month(qpd.date)=8
where up.university='复旦大学'
group by up.device_id