题解 | #统计复旦用户8月练题情况#

统计复旦用户8月练题情况

https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3

题目描述

运营团队希望了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况。

解题思路

  1. 筛选复旦大学的用户

    • user_profile 表中筛选出 university 为 "复旦大学" 的用户,获取他们的 device_iduniversity
  2. 统计8月份的练习数据

    • question_practice_detail 表中筛选出日期在 8月份(2021-08)的记录。
    • 统计每个用户在8月份练习的总题目数 (question_cnt) 和回答正确的题目数 (right_question_cnt)。
  3. 处理未练习用户的数据

    • 使用 左连接 (LEFT JOIN) 将复旦大学的用户与8月份的练习数据进行连接。
  4. 排序输出

    • 按照 device_id 升序排列结果,确保输出顺序与期望一致。

SQL 查询

SELECT
    up.device_id,
    up.university,
    COUNT(qpd.question_id) AS question_cnt,
    SUM(
            CASE
                WHEN qpd.result = 'right' THEN 1
                ELSE 0
            END
        ) AS right_question_cnt
FROM
    user_profile up
LEFT JOIN 
    question_practice_detail qpd 
    ON up.device_id = qpd.device_id 
    AND qpd.date BETWEEN '2021-08-01' AND DATE_ADD('2021-08-01', INTERVAL 30 DAY)AND DATE_ADD('2021-08-01', INTERVAL 30 DAY)
WHERE
    up.university = '复旦大学'

GROUP BY
    up.device_id,
    up.university
ORDER BY
    up.device_id ASC;

代码解释

  • LEFT JOIN 条件
    • up.device_id = qpd.device_id:基于 device_id 进行连接。
    • qpd.date BETWEEN '2021-08-01' AND '2021-08-31':仅关联8月份的练习数据。
全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
本科生是不是只能去送外卖了
有气魄的海豚在喝茶:外卖这个版本被保安克制
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务