题解 | #统计复旦用户8月练题情况#
统计复旦用户8月练题情况
https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3
select
t.device_id,
t.university,
count(h.question_id) question_cnt,
sum(if (h.result = 'right', 1, 0)) right_question_cnt
from
user_profile t
left join question_practice_detail h on t.device_id = h.device_id
and month (h.date) = 8
where
t.university = '复旦大学'
group by
t.device_id
1,首先确定2张表,一张基本信息表,一张计算值表
2,其次确定关联条件,重点关注计算值表,除了要求汇总的字段,其他字段也得加入关联条件
注意 ——这道题目的关联条件首先想到的就是用户id,但是很容易忽视计算值表的八月份,此处注意!
3,总题数和回答正确的题数是最关键的考虑点,先把这想通了才能继续下面思路。
总题数:普通计数-count()
回答正确的题数:判断类型计数-sum(if())
4,聚合函数要加groupby
5,对于基本信息表的复旦大学直接where过滤一下就可以了
6,题目最后一句条件是细节,计算值表的条件-八月份没练习过的,显然要求显示右表未关联上的数据
用left join
#sql#
美的集团公司福利 862人发布