题解 | #统计复旦用户8月练题情况#
统计复旦用户8月练题情况
http://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3
要求
现在运营想要了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况,请取出相应明细数据,对于在8月份没有练习过的用户,答题数结果返回0.
思路
解法1:
- 复旦用户: university = "复旦大学"
- 8月: EXTRACT(MONTH FROM DATE) = 08
- 总题目数: 这里我是先用when then 将 date为8月的 输出为1,剩下的 输出为0,然后用sum() 计算。
- 回答正确: 这个不知道怎么用 count() 算, 所以这里我是先用when then 将“right” 输出为1,"wrong"输出为0,然后用sum() 计算。
实现
select distinct a.device_id,a.university,sum(a.question_count) as question_cnt,
sum(a.cnt) as right_question_cnt
from
(SELECT up.device_id, up.university,qp.result,qp.date,
case
when qp.result = "right" then 1
else 0
end cnt,
case
when extract(month from qp.date) = 08 then 1
else 0
end question_count
from
user_profile as up
left join
question_practice_detail as qp
on
up.device_id = qp.device_id
where university = "复旦大学" ) as a
group by a.device_id