题解 | #统计复旦用户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#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务