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

题目描述

请你找到作答每类试卷的突出非领导员工,并输出他们的员工ID,
员工等级和突出试卷类别并按照员工ID升序排序,
若某员工两类试卷都突出,则按照试卷ID升序排序。

拆解一下题目,我们要做的事情如下:

1、找到作答每类试卷的突出非领导员工,题目中给出的定义为:

作答用时少于同类试卷平均值 且 个人平均分数大于同类试卷总体平均值的员工

我们先看 作答用时少于同类试卷平均值

作答用时可以从 exam_record中获取,但exam_record表中没有直接给出作答时间,

我们需要根据 start_time开始作答时间字段和submit_time交卷时间字段计算出来,使用timestampdiff函数,即:

timestampdiff(second, re.start_time,re.submit_time)

平均作答用时根据试卷类型分组,使用avg聚合即可。

再看个人分数大于同类试卷总体平均值

同类试卷总体平均分 直接从 exam_record表中对score字段聚合即可。

我们使用with as创建临时表存储每类试卷的平均分和平均用时,方便后续使用。

with avg_every as(
    select
        avg(timestampdiff(second, re.start_time,re.submit_time)) as time_avg,
        avg(re.score) as score_avg,
        re.exam_id
    from
        emp_info inf
    join
        exam_record re on re.emp_id = inf.emp_id
    group by
        re.exam_id
)

接下来,我们筛选出符合条件的成绩:

exam_target as(
    select
        r.emp_id,
        r.exam_id
    from
        avg_every a
        join exam_record r on r.exam_id = a.exam_id
    where
        r.score > a.score_avg and timestampdiff(second, r.start_time,r.submit_time) < a.time_avg
)

题目中还有一个筛选条件是"非领导员工",在emp_info表内,可以在输出结果的时候一起筛选。

where
    i.emp_level < 7

2、输出结果和排序

输出他们的员工ID,员工等级和突出试卷类别并按照员工ID升序排序,
若某员工两类试卷都突出,则按照试卷ID升序排序。

我们需要输出exam_tag,以及判断员工等级,连接这两个表即可。

select
    t.emp_id,
    i.emp_level,
    e.tag
from
    exam_target t
join
    examination_info e on t.exam_id = e.exam_id
join
    emp_info i on i.emp_id = t.emp_id
where
    i.emp_level < 7
order by
    i.emp_id asc,e.exam_id asc

3、完整代码:

with avg_every as(
    select
        avg(timestampdiff(second, re.start_time,re.submit_time)) as time_avg,
        avg(re.score) as score_avg,
        re.exam_id
    from
        emp_info inf
    join
        exam_record re on re.emp_id = inf.emp_id
    group by
        re.exam_id
)
,exam_target as(
    select
        r.emp_id,
        r.exam_id
    from
        avg_every a
        join exam_record r on r.exam_id = a.exam_id
    where
        r.score > a.score_avg and timestampdiff(second, r.start_time,r.submit_time) < a.time_avg
)
select
    t.emp_id,
    i.emp_level,
    e.tag
from
    exam_target t
join
    examination_info e on t.exam_id = e.exam_id
join
    emp_info i on i.emp_id = t.emp_id
where
    i.emp_level < 7
order by
    i.emp_id asc,e.exam_id asc

全部评论

相关推荐

03-17 12:07
已编辑
腾讯_CSIG_高级前端工程师
这里的经验主要针对计算机、信息类公司的面试,主要针对几个大厂:第一优先级:【整理你的简历】。这里就不分享经验了,网上到处都是经验。就一个简单的方法,在牛客上偷窥一个拿多个offer的大佬。有些大佬水群会把简历发出来,你就把他的简历copy下来,然后把内容替换成自己的,不要改格式。失败的简历多种多样,成功大佬的简历相差不大。这里主要是提醒下大家,网上很多骗钱的模版,这样那样花里胡哨的,实际上你的简历HR可能只用了2秒钟就筛完了。第二优先级:【背好面经】。一面大多都会问些面经,因为面试官有一项是考察面试者基础,简单问题没答上很容易触发必死裁决(学校越拉越要背好面经,因为你在面试阶段没有犯错的机会)。至于面经准备的丰富程度就看个人了,以前我面试的时候我室友说我在讲相声串口,很丝滑,但是并没有用,该j还是j。第三优先级:【准备好项目经历】。项目经历在面试眼中有个鄙视链:开源贡献/实习项目&nbsp;&gt;&nbsp;横向项目(校企合作)&nbsp;&gt;&nbsp;个人&nbsp;DIY项目。如果只有个人&nbsp;DIY&nbsp;的项目,没有更多可以写的,一定要把项目最后一公里走完,就是把项目部署到线上,用腾讯云免费的&nbsp;EdgeOne&nbsp;Pages(https://edgeone.ai/zh/products/pages),或者更加复杂的使用&nbsp;Cloudflare&nbsp;Worker。因为个人项目淘宝商城、仿网易云音乐等实在太多了,面试官早就不知道看了多少个,你自己弄一些动画效果或者优化项,如果可以部署体验,面试官可以很好的跟着你准备的东西走。如果你准备的项目他都没兴趣打开看一看的,随便问问,那么多半无了。第四优先级:【刷题】。刷题并不是不重要,而是这个不是几天可以快速解决的。一般来说有过ACM或者蓝桥杯经验的会好很多。我以前也是搞ACM的,有一点需要清楚面试做题上和大家刷题是不一样的。在别人盯着你,给你计时的情况下,还能冷静敲代码的人是很少的,一般需要有比赛经验。而且如果给你的题你没有准备到,多半没法现场思考解法的。特别是某些大厂还需要写完代码现场&nbsp;Accepted&nbsp;的,这真挺难的,建议大家早做准备。————这里补充一下八股面经和项目经历,一般有经验的面试官会结合起来一起问。这种情况下一定要去做项目部署、去引导话题,因为面试的大佬思维开始发散起来,在知识广度和深度上,校招生是很难跟得上,大家节奏一旦对不上多半要无。这里叫大家去部署项目就是让面试官玩起来,体验你的东西话题就聚焦了,如果强行不聚焦那么无了也就无了,说明对面要求就是特别高。这里叫用腾讯云的&nbsp;EdgeOne&nbsp;Pages部署是因为国内访问很快,如果你部署个项目卡得要死,面试官肯定问你优化或者网络相关的,也容易j。这里的优先级排序不是说重要性,在我看来都很重要,竞争这么激烈,一个没做好就无了。这里的优先级是一关一关过,简历排第一是因为简历没做好直接后面的都没了,无论你准备得多好。
点赞 评论 收藏
分享
03-17 12:07
已编辑
腾讯_CSIG_高级前端工程师
这里的经验主要针对计算机、信息类公司的面试,主要针对几个大厂:第一优先级:【整理你的简历】。这里就不分享经验了,网上到处都是经验。就一个简单的方法,在牛客上偷窥一个拿多个offer的大佬。有些大佬水群会把简历发出来,你就把他的简历copy下来,然后把内容替换成自己的,不要改格式。失败的简历多种多样,成功大佬的简历相差不大。这里主要是提醒下大家,网上很多骗钱的模版,这样那样花里胡哨的,实际上你的简历HR可能只用了2秒钟就筛完了。第二优先级:【背好面经】。一面大多都会问些面经,因为面试官有一项是考察面试者基础,简单问题没答上很容易触发必死裁决(学校越拉越要背好面经,因为你在面试阶段没有犯错的机会)。至于面经准备的丰富程度就看个人了,以前我面试的时候我室友说我在讲相声串口,很丝滑,但是并没有用,该j还是j。第三优先级:【准备好项目经历】。项目经历在面试眼中有个鄙视链:开源贡献/实习项目&nbsp;&gt;&nbsp;横向项目(校企合作)&nbsp;&gt;&nbsp;个人&nbsp;DIY项目。如果只有个人&nbsp;DIY&nbsp;的项目,没有更多可以写的,一定要把项目最后一公里走完,就是把项目部署到线上,用腾讯云免费的&nbsp;EdgeOne&nbsp;Pages(https://edgeone.ai/zh/products/pages),或者更加复杂的使用&nbsp;Cloudflare&nbsp;Worker。因为个人项目淘宝商城、仿网易云音乐等实在太多了,面试官早就不知道看了多少个,你自己弄一些动画效果或者优化项,如果可以部署体验,面试官可以很好的跟着你准备的东西走。如果你准备的项目他都没兴趣打开看一看的,随便问问,那么多半无了。第四优先级:【刷题】。刷题并不是不重要,而是这个不是几天可以快速解决的。一般来说有过ACM或者蓝桥杯经验的会好很多。我以前也是搞ACM的,有一点需要清楚面试做题上和大家刷题是不一样的。在别人盯着你,给你计时的情况下,还能冷静敲代码的人是很少的,一般需要有比赛经验。而且如果给你的题你没有准备到,多半没法现场思考解法的。特别是某些大厂还需要写完代码现场&nbsp;Accepted&nbsp;的,这真挺难的,建议大家早做准备。————这里补充一下八股面经和项目经历,一般有经验的面试官会结合起来一起问。这种情况下一定要去做项目部署、去引导话题,因为面试的大佬思维开始发散起来,在知识广度和深度上,校招生是很难跟得上,大家节奏一旦对不上多半要无。这里叫大家去部署项目就是让面试官玩起来,体验你的东西话题就聚焦了,如果强行不聚焦那么无了也就无了,说明对面要求就是特别高。这里叫用腾讯云的&nbsp;EdgeOne&nbsp;Pages部署是因为国内访问很快,如果你部署个项目卡得要死,面试官肯定问你优化或者网络相关的,也容易j。这里的优先级排序不是说重要性,在我看来都很重要,竞争这么激烈,一个没做好就无了。这里的优先级是一关一关过,简历排第一是因为简历没做好直接后面的都没了,无论你准备得多好。#简历中的项目经历要怎么写##春招##求职#
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务