SQL练习四—完成员工考核试卷突出的非领导员工

判断使用窗口函数还是分组,关键在于你的业务需求是只需要聚合结果,还是需要在保留原始数据的基础上进行计算,以及是否需要为每行数据提供基于分组的额外信息。本题需要计算平均值后和成绩比较,需要保留原数据,则使用窗口函数。

问题分析:

1.表连接:先将三个表进行join连接    直接把非领导条件放上 where

2.求时间和分数的平均值:需要保留原数据和平均值作比较,所以使用窗口函数。

时间差:timestampdiff(minute,start_time,submit_time)    avg() over(partition by emp_id)

分数:avg(score)over(partition by emp_id)

3.按条件输出:突出员工满足两个条件 时间小于平均,分数大于平均 再排序

select emp_id,emp_level,exam_tag
from (
select r.exam_id,m.emp_id,m.emp_level,i.tag as exam_tag,
timestampdiff(minute,start_time,submit_time) as t,
avg(timestampdiff(minute,start_time,submit_time))over(partition by r.exam_id) as avgt,
score,
avg(score)over (partition by r.exam_id) as avgs
from exam_record as r 
left join  examination_info as i on r.exam_id=i.exam_id
left join emp_info  as m on m.emp_id=r.emp_id
where emp_level <7
order by exam_id
 ) t1 
where t<=avgt and score>=avgs
order by emp_id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值