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.排序:先按学校再按题目难度正序;