SELECT
emp_id,
emp_level,
exam_tag
FROM(
SELECT
er.emp_id,
er.exam_id,
emp_level,
ROUND(TIMESTAMPDIFF(SECOND, start_time, submit_time) / 60, 1) AS time_consumed,
score,
avg_time, # 平均用时
avg_score, # 平均分数
tag AS exam_tag
FROM exam_record er
JOIN examination_info ei
ON er.exam_id = ei.exam_id
JOIN emp_info emp
ON er.emp_id = emp.emp_id # 2. 最重要的一步,把平均用时和分数和所需变量JOIN到一起
JOIN(
SELECT
exam_id,
ROUND(AVG(TIMESTAMPDIFF(SECOND, start_time, submit_time) / 60), 1) AS avg_time,
AVG(score) AS avg_score
FROM exam_record
GROUP BY exam_id
) AS tb1 # 1. 找到每个exam_id平均用时和平均分数
ON tb1.exam_id = er.exam_id
WHERE emp_level < 7 # 条件1 非领导员工 emp_level < 7
) AS tb2
WHERE time_consumed < avg_time AND score > avg_score # 条件2和3
ORDER BY emp_id ASC, exam_id ASC # 条件4