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