首页 > 试题广场 >

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

[编程题]完成员工考核试卷突出的非领导员工
  • 热度指数:21981 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
2021年结束,某公司组织了一场员工年终考核。作答用时少于同类试卷平均值且个人分数大于同类试卷总体平均值的员工记为该类型的突出员工。
有员工信息表 emp_info 如下:
(emp_id员工ID,emp_name员工姓名, emp_level员工等级, register_time入职时间,其中emp level<7的是员工,其他是领导)
考核试卷信息表 examination_info 如下:
(exam_id试卷ID, tag试卷类别, duration考试时长, release_time发布时间)
试卷作答记录表 exam_record 如下:
(emp_id员工ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分):
请你找到作答每类试卷的突出非领导员工,并输出他们的员工ID,员工等级和突出试卷类别并按照员工ID升序排序,若某员工两类试卷都突出,则按照试卷ID升序排序。
由示例数据结果输出如下:

解释:
9001试卷平均得分为78.667分,得分高于78.667且符合员工等级小于7的员工有1005、1007
9001试卷平均作答时间为27.3分钟,作答时间小于27.3分钟且符合员工等级小于7的员工有1006、1007
因此9001号卷突出员工为1007
9002试卷平均得分为75.833分,得分高于75.833且符合员工等级小于7的员工有1005、1006
9002试卷平均作答时间为34.2分钟,作答时间小于34.2分钟且符合员工等级小于7的员工有1006、1007
因此9002号卷突出员工为1006

示例1

输入

drop table if exists emp_info,examination_info,exam_record;
CREATE TABLE emp_info (
  emp_id INT NOT NULL,
  emp_name VARCHAR(45) NOT NULL,
  emp_level INT NOT NULL,
  register_time DATE NOT NULL,
  PRIMARY KEY (emp_id)
);

INSERT INTO emp_info VALUES (1001, '张老板', 10, '2017-10-01');
INSERT INTO emp_info VALUES (1002, '刘主管', 9, '2017-10-01');
INSERT INTO emp_info VALUES (1003, '李主任', 8, '2017-10-23');
INSERT INTO emp_info VALUES (1004, '王组长', 7, '2017-12-23');
INSERT INTO emp_info VALUES (1005, '张三', 4, '2020-01-22');
INSERT INTO emp_info VALUES (1006, '李四', 3, '2021-03-06');
INSERT INTO emp_info VALUES (1007, '王五', 3, '2021-07-04');

CREATE TABLE examination_info (
    exam_id int PRIMARY KEY ,
    tag varchar(32) NOT NULL ,
    duration int NOT NULL ,
    release_time datetime
);

INSERT INTO examination_info VALUES (9001, '企业文化', 60, '2021-12-29');
INSERT INTO examination_info VALUES (9002, '技术水平', 60, '2021-12-29');

CREATE TABLE exam_record (
    emp_id int NOT NULL,
    exam_id int NOT NULL,
    start_time datetime NOT NULL,
    submit_time datetime,
    score tinyint
);

INSERT INTO exam_record VALUES(1002, 9001, '2021-12-30 09:01:01', '2021-12-30 09:21:59', 80);
INSERT INTO exam_record VALUES(1002, 9002, '2021-12-31 09:01:01', '2021-12-31 09:41:42', 74);
INSERT INTO exam_record VALUES(1003, 9001, '2021-12-30 09:01:01', '2021-12-30 09:27:49', 90);
INSERT INTO exam_record VALUES(1003, 9002, '2021-12-31 09:01:01', '2021-12-31 09:37:24', 60);
INSERT INTO exam_record VALUES(1004, 9001, '2021-12-30 09:01:01', '2021-12-30 09:31:59', 60);
INSERT INTO exam_record VALUES(1004, 9002, '2021-12-31 09:01:01', '2021-12-31 09:26:07', 70);
INSERT INTO exam_record VALUES(1005, 9001, '2021-12-30 09:01:01', '2021-12-30 09:42:37', 83);
INSERT INTO exam_record VALUES(1005, 9002, '2021-12-31 09:01:01', '2021-12-31 09:51:43', 92);
INSERT INTO exam_record VALUES(1006, 9001, '2021-12-30 09:01:01', '2021-12-30 09:27:42', 66);
INSERT INTO exam_record VALUES(1006, 9002, '2021-12-31 09:01:01', '2021-12-31 09:32:06', 97);
INSERT INTO exam_record VALUES(1007, 9001, '2021-12-30 09:01:01', '2021-12-30 09:17:36', 93);
INSERT INTO exam_record VALUES(1007, 9002, '2021-12-31 09:01:01', '2021-12-31 09:21:59', 62);

输出

1006|3|技术水平
1007|3|企业文化
头像 牛客题解官
发表于 2025-02-28 11:40:33
精华题解 题目描述 请你找到作答每类试卷的突出非领导员工,并输出他们的员工ID, 员工等级和突出试卷类别并按照员工ID升序排序, 若某员工两类试卷都突出,则按照试卷ID升序排序。 拆解一下题目,我们要做的事情如下: 1、找到作答每类试卷的突出非领导员工,题目中给出的定义为: 作答用时少于同类试卷平均值 且 展开全文
头像 什么名都被占用了
发表于 2025-03-09 01:12:22
with details as( select er.*, avg(score) over (partition by exam_id) as examavgscore, avg(timestampdiff(second,start_time, 展开全文
头像 王清楚
发表于 2025-04-21 17:10:13
算法编程题知识点考察趋势 标粗部分为常考知识点 难度 知识点 入门 语法题、模拟、枚举、模拟、栈、队列 简单 数据结构、模拟、贪心、排序、链表、前缀和、差分、位运算、哈希表、二叉树 中等 数据结构、动态规划、二分、贪心、动态规划(01背包、完全背包)、数学(快速幂、杨辉 展开全文
头像 超级麻蛋
发表于 2025-03-06 15:51:25
select emp_info.emp_id, emp_level, tag exam_tag from ( select ei.exam_id, tag, avg(score) 展开全文
头像 多吃不胖少睡不困
发表于 2025-10-07 16:04:14
SELECT emp_id, emp_level, tag AS exam_tag FROM exam_record JOIN emp_info USING (emp_id) JOIN examination_info USING (exam_id) 展开全文
头像 在午休的伊泽瑞尔很想吃火锅
发表于 2025-06-24 22:36:36
with t1 as ( select emp_id, exam_id, score, AVG(score) over(partition by exam_id) as avg_sco, timestampdiff(second, start_tim 展开全文
头像 踏实的安德鲁加麻加辣
发表于 2025-12-07 16:12:41
with tmp as (select a.exam_id,b.avg_time,a.avg_score from( select exam_id,avg(score) avg_score from exam_record group by exam_id )as a left joi 展开全文
头像 同济数分王
发表于 2025-04-22 11:07:16
-- 这是用窗口函数的解法 with t as ( select r.emp_id, emp_level, r.exam_id, tag, start_ti 展开全文
头像 五首绝句哈
发表于 2025-06-18 16:18:14
WITH t AS ( SELECT a.emp_id, b.emp_level, TIMESTAMPDIFF(SECOND, a.start_time, a.submit_time) AS durati 展开全文
头像 lizhenzhen
发表于 2025-12-04 12:25:34
-- 求平均用时和平均分数 with er as (select *, avg(timestampdiff(second,start_time,submit_time)) over(partition by exam_id) as avg_time, avg(score) 展开全文
头像 wenzo_
发表于 2025-02-14 10:34:36
SELECT emp_id, emp_level, exam_tag FROM( SELECT er.emp_id, er.exam_id, emp_level, ROUND(TIMESTAMPDIFF( 展开全文