SELECT
up.university,
qd.difficult_level,
ROUND(COUNT(qpd.id) / COUNT(DISTINCT up.device_id), 4) AS avg_answer_cnt
FROM
user_profile up
JOIN
question_practice_detail qpd ON up.device_id = qpd.device_id
JOIN
question_detail qd ON qpd.question_id = qd.question_id
GROUP BY
up.university, qd.difficult_level
ORDER BY
up.university, qd.difficult_level;
SELECT
up.university,
qd.difficult_level,
ROUND(COUNT(qpd.id) / COUNT(DISTINCT up.device_id), 4) AS avg_answer_cnt /
COUNT(qpd.id):统计question_practice_detail表中每个分组内的答题记录数量,即总的答题次数。COUNT(DISTINCT u.device_id):统计user_profile表中每个分组内不同的设备 ID 数量,也就是参与答题的不同用户数量。COUNT(qpd.id) / COUNT(DISTINCT u.device_id):将总的答题次数除以参与答题的不同用户数量,得到每个分组下用户的平均答题数量。ROUND(..., 4):使用ROUND函数将计算得到的平均答题数量结果保留 4 位小数。AS avg_answer_cnt:为计算结果指定一个别名avg_answer_cnt,方便后续引用。
FROM
user_profile up
JOIN
question_practice_detail qpd ON up.device_id = qpd.device_id
JOIN
question_detail qd ON qpd.question_id = qd.question_id
GROUP BY
up.university, qd.difficult_level/
该子句将连接后的结果按照 user_profile 表中的 university 字段和 question_detail 表中的 difficult_level 字段进行分组。
ORDER BY
up.university, qd.difficult_level;/
ORDER BY 子句用于对最终的查询结果进行排序。这里按照 user_profile 表中的 university 字段和 question_detail 表中的 difficult_level 字段进行升序排序

京公网安备 11010502036488号