题解 | 完成员工考核试卷突出的非领导员工

完成员工考核试卷突出的非领导员工

https://www.nowcoder.com/practice/422dcd6ae72c49c9bbec1aff90d69806

with
    t as (
        select
            tag,
            avg(score) as avs,
            avg(timestampdiff(second, start_time, submit_time)) as exam_time
        from
            emp_info as emi
            join exam_record er on emi.emp_id = er.emp_id
            join examination_info as exi on er.exam_id = exi.exam_id
        group by
            tag
    )
select
    emp_id,
    emp_level,
    tag as exam_tag
from
    emp_info 
    join exam_record using(emp_id) 
    join examination_info using(exam_id)
    join t using(tag)
where emp_level < 7
and score > t.avs
and timestampdiff(second, start_time, submit_time) < t.exam_time
order by emp_id,exam_id

全部评论
这种题先什么都不管,脑子里三张表联起来形成一张宽表,然后搞清楚核心筛选条件就是:1.员工等级,2.得分大于平均分,3考试用时小于平均用时; 条件1一个where就能解决, 条件2和条件3在筛选方法上本质上是一样的,都是取平均数,一看到平均数肯定就想到聚合函数,所以建一个临时表去算出这俩平均数是最清楚的, 最后把这个临时表和最开始的宽表一联,把筛选条件一写,齐活。
点赞 回复 分享
发布于 07-06 14:04 浙江

相关推荐

不愿透露姓名的神秘牛友
07-01 10:56
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务