题解 | #统计每个学校各难度的用户平均刷题数#

统计每个学校各难度的用户平均刷题数

https://www.nowcoder.com/practice/5400df085a034f88b2e17941ab338ee8

SELECT
    university,
    difficult_level,
    -- COUNT(question_id),
    -- COUNT(DISTINCT device_id),
    FORMAT (COUNT(question_id) / COUNT(DISTINCT device_id), 4) AS avg_ques_num
FROM
    (
        SELECT
            user_profile.device_id,
            user_profile.university,
            question_practice_detail.question_id,
            question_detail.difficult_level
        FROM
            user_profile,
            question_practice_detail,
            question_detail
        WHERE
            user_profile.device_id = question_practice_detail.device_id
            AND question_practice_detail.question_id = question_detail.question_id
    ) temp
GROUP BY
    temp.difficult_level,
    temp.university
ORDER BY
    university,
    difficult_level

问题:参加了答题的不同学校、不同难度的用户平均答题量,输出示例如下

题解思路:

1.首先将三表按共有列相等的条件连接,查询device_id、university、question_id、difficult_level,如下图;

2.将上表作为临时表temp,进行查询;

2.1按难度分组,列出每个难度分别有多少题被做了,如下图;

2.2再按学校分组,列出每个学校每种难度的题各做了多少,如下图;

2.3再统计出各学校各难度的题分别有多少同学做,如下图;

2.4最后将COUNT(question_id)/COUNT(DISTINCT device_id)得出各学校各难度题目平均答题量。

3.保留小数位数使用FORMAT()函数;

4.排序:先按学校再按题目难度正序;

全部评论

相关推荐

SadnessAlex:跟三十五岁原则一样,人太多给这些***惯坏了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务