首页 > 试题广场 >

得分不小于平均分的最低分

[编程题]得分不小于平均分的最低分
  • 热度指数:161580 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
请从试卷作答记录表中找到SQL试卷得分不小于该类试卷平均得分的用户最低得分。
示例数据 exam_record表(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分):
id uid exam_id start_time submit_time
score
1 1001 9001 2020-01-02 09:01:01 2020-01-02 09:21:01
80
2 1002
9001
2021-09-05 19:01:01 2021-09-05 19:40:01
89
3 1002 9002
2021-09-02 12:01:01
(NULL)
(NULL)
4 1002 9003
2021-09-01 12:01:01
(NULL) (NULL)
5 1002
9001 2021-02-02 19:01:01 2021-02-02 19:30:01
87
6 1002
9002
2021-05-05 18:01:01 2021-05-05 18:59:02
90
7 1003 9002
2021-02-06 12:01:01
(NULL)
(NULL)
8 1003 9003
2021-09-07 10:01:01
2021-09-07 10:31:01 86
9
1004 9003
2021-09-06 12:01:01 (NULL)
(NULL)

examination_info表(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间)
id exam_id tag difficulty
duration release_time
1 9001 SQL hard 60 2020-01-01 10:00:00
2
9002
SQL
easy 60 2020-02-01 10:00:00
3 9003
算法 medium 80 2020-08-02 10:00:00

示例输出数据:
min_score_over_avg
87

解释:试卷9001和9002为SQL类别,作答这两份试卷的得分有[80,89,87,90],平均分为86.5,不小于平均分的最小分数为87
示例1

输入

drop table if exists examination_info;
CREATE TABLE  examination_info (
    id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    exam_id int UNIQUE NOT NULL COMMENT '试卷ID',
    tag varchar(32) COMMENT '类别标签',
    difficulty varchar(8) COMMENT '难度',
    duration int NOT NULL COMMENT '时长',
    release_time datetime COMMENT '发布时间'
)CHARACTER SET utf8 COLLATE utf8_general_ci;

drop table if exists exam_record;
CREATE TABLE  exam_record (
    id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    uid int NOT NULL COMMENT '用户ID',
    exam_id int NOT NULL COMMENT '试卷ID',
    start_time datetime NOT NULL COMMENT '开始时间',
    submit_time datetime COMMENT '提交时间',
    score tinyint COMMENT '得分'
)CHARACTER SET utf8 COLLATE utf8_general_ci;

INSERT INTO examination_info(exam_id,tag,difficulty,duration,release_time) VALUES
  (9001, 'SQL', 'hard', 60, '2020-01-01 10:00:00'),
  (9002, 'SQL', 'easy', 60, '2020-02-01 10:00:00'),
  (9003, '算法', 'medium', 80, '2020-08-02 10:00:00');

INSERT INTO exam_record(uid,exam_id,start_time,submit_time,score) VALUES
(1001, 9001, '2020-01-02 09:01:01', '2020-01-02 09:21:01', 80),
(1002, 9001, '2021-09-05 19:01:01', '2021-09-05 19:40:01', 89),
(1002, 9002, '2021-09-02 12:01:01', null, null),
(1002, 9003, '2021-09-01 12:01:01', null, null),
(1002, 9001, '2021-02-02 19:01:01', '2021-02-02 19:30:01', 87),
(1002, 9002, '2021-05-05 18:01:01', '2021-05-05 18:59:02', 90),
(1003, 9002, '2021-02-06 12:01:01', null, null),
(1003, 9003, '2021-09-07 10:01:01', '2021-09-07 10:31:01', 86),
(1004, 9003, '2021-09-06 12:01:01', null, null);

输出

87

备注:
保证至少有一个有效的SQL类别的试卷作答分数
头像 摸鱼学大师
发表于 2021-10-22 16:02:19
SQL16 得分不小于平均分的最低分 题目主要信息: 从试卷作答记录表中找到类别为的SQL试卷得分不小于该类试卷平均得分的用户最低得分 其中试卷信息记录在表examination_info(包括试卷ID、类别、难度、时长、发布时间),答题信息记录在表exam_record(包括试卷ID、用户ID、 展开全文
头像 天天向好
发表于 2022-02-14 17:13:43
题意:SQL类试卷中,得分大于等于SQL类试卷平均得分的最小得分,即tag = SQL,score >= avg(score),score = min(score)。 分析: SQL类试卷: select exam_id from examination_info   展开全文
头像 webary
发表于 2021-10-21 20:03:42
明确题意: 找到SQL试卷得分不小于该类试卷平均得分的用户最低得分 问题分解: 找到SQL类试卷得分的平均分。 试卷作答记录表关联试卷信息表:join using 筛选试卷类别:where tag='SQL' 取平均分:avg(score) 找到分数不小于平均分的记录:where tag= 展开全文
头像 oofferrrrr
发表于 2021-10-21 10:58:23
根据题意把符合条件的数据先列出来成为新的表格 with e as( select er.score from exam_record er left join examination_info ei on er.exam_id=ei.exam_id where ei.tag='SQL' and er 展开全文
头像 波文
发表于 2021-11-23 14:03:00
-- 找到SQL试卷得分不小于该类试卷平均得分的用户最低得分。 -- 1、关联过滤 2、计算平均值 3、最低得分,大于平均分,取最小的 SELECT MIN(score) FROM exam_record a INNER JOIN examination_i 展开全文
头像 呦呵呵呵
发表于 2022-01-29 10:51:11
SELECT MIN(score) FROM exam_record AS e1 LEFT JOIN examination_info AS e2 USING(exam_id) WHERE tag = 'SQL' AND score >= AVG(CASE WHEN 展开全文
头像 吾亦悠然归山
发表于 2022-06-18 23:17:37
思路:嵌套查询 题干:找到SQL试卷得分不小于该类试卷平均得分的用户最低得分 分步查询法: 1)找 SQL 试卷,代码如下: SELECT exam_id FROM examination_info WHERE tag =  展开全文
头像 我要跳跳跳跳跳跳槽
发表于 2021-11-16 21:54:23
别人写的都挺好,我只是分享一下我的思路以及犯的错误: 1.要审题,题目要求是"SQL"比较,那么就需要两张表进行联表; from exam_record a left join examination_info b on a.exam_id = b.exam_id where b.tag = 'SQ 展开全文
头像 人生苦短,但求成长
发表于 2022-03-13 11:22:04
select min(score)  as min_score_over_avg from exam_record t1 join examination_info t2 on t1.exam_id  展开全文
头像 酸菜鱼土豆大侠
发表于 2022-11-23 17:42:42
【场景】:某个条件下做统计 【分类】:where 数据 > select 条件 分析思路 难点: 1.理解题目要求的是什么 (1)得到SQL试卷的平均分 [条件]:where tag = 'SQL' [条件]:avg(score) (2)找到得分不小于平均分的最低分 [条件 展开全文
  • 二维码

    扫描二维码,关注牛客网

  • 二维码

    下载牛客APP,随时随地刷题