第一种方法:
-- 第一步:找出非领导员工 with emp_info_workers as ( select emp_id,emp_level from emp_info where emp_level < 7), -- 第二步:计算答题时间和分数的平均值 exam_record_avg as ( select emp_id,exam_id,diff_time,score,avg(diff_time) over(partition by exam_id) as avg_time,avg(score) over(partition by exam_id) as avg_score from ( select emp_id,exam_id,timestampdiff(second,start_time,submit_time) as diff_time,score from exam_record) t1 ) -- 第三步:找出优秀员工 /*select ea.emp_id,exam_id,emp_level from exam_record_avg ea inner join emp_info_workers ew on ea.emp_id = ew.emp_id where diff_time < avg_time and score > avg_score */ -- 第四步:与考卷信息表关联,输出最终结果 select ea.emp_id,emp_level,ei.tag from exam_record_avg ea inner join emp_info_workers ew on ea.emp_id = ew.emp_id inner join examination_info ei on ea.exam_id = ei.exam_id where diff_time < avg_time and score > avg_score order by ea.emp_id,ea.exam_id