select
emp_id,
emp_level,
exam_tag
from
(select
n.emp_id,
n.emp_level,
r.score,
i.exam_id,
i.tag as exam_tag,
timestampdiff(second,r.start_time,r.submit_time) as time,
avg(timestampdiff(second,r.start_time,r.submit_time)) over (partition by i.tag) as avg_time,
avg(score) over (partition by i.tag) as avg_score
from
exam_record r
join examination_info i on r.exam_id=i.exam_id
join emp_info n on r.emp_id=n.emp_id
) t
where
t.emp_level<7
and t.time<t.avg_time
and t.score>t.avg_score
order by
emp_id asc,
exam_id asc
先用一个子查询给每一行打上平均分和平均时间的标签,然后在外层判断条件

京公网安备 11010502036488号