大数据开发工程师之SQL面试题(一)

本文介绍了SQL面试中常见的题目,包括如何插入用户作答记录,如何迁移历史数据,以及如何处理复杂查询。同时,涉及到了高难度SQL试卷的发布与得分统计,展示了如何计算截断平均分。通过对exam_record和examination_info表的操作,揭示了数据库管理和性能优化的重要性。
摘要由CSDN通过智能技术生成

sql面试题(一)

  1. 牛客后台会记录每个用户的试卷作答记录到exam_record表,现在有两个用户的作答记录详情如下:
  • 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分;
  • 用户1002在2021年9月4日上午7点1分2秒开始作答试卷9002,并在10分钟后退出了平台。

试卷作答记录表exam_record中,表已建好,其结构如下,请用一条语句将这两条记录插入表中

img

insert into exam_record(uid,exam_id,start_time,submit_time,score) values(1001,9001,'2021-09-01 22:11:12','2021-09-01 23:01:12',90),(1002,9002,'2021-09-04 07:01:02','2021-09-04 07:11:02',null);
  1. 现有一张试卷作答记录表exam_record,结构如下表,其中包含多年来的用户作答试卷记录,由于数据越来越多,维护难度越来越大,需要对数据表内容做精简,历史数据做备份。

    表exam_record:

img

  1. 我们已经创建了一张新表exam_record_before_2021用来备份2021年之前的试题作答记录,结构和exam_record表一致,请将2021年之前的已完成了的试题作答纪录导入到该表。
insert into exam_record_before_2021
select null,uid,exam_id,start_time,submit_time,score from exam_record 
where year(submit_time)<2021;
  1. 现在有一套ID为9003的高难度SQL试卷,时长为一个半小时,请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info(其表结构如下图),不管该ID试卷是否存在,都要插入成功,请尝试插入它。

试题信息表examination_info:

img

replace into examination_info value(null,9003,'SQL','hard',90,'2021-01-01 00:00:00');
  1. 牛客的运营同学想要查看大家在SQL类别中高难度试卷的得分情况。

请你帮她从exam_record数据表中计算所有用户完成SQL类别高难度试卷得分的截断平均值(去掉一个最大值和一个最小值后的平均值)。

示例数据:examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间)

img

示例数据:exam_record(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分)img

根据输入你的查询结果如下:

img
从examination_info表可知,试卷9001为高难度SQL试卷,该试卷被作答的得分有[80,81,84,90,50],去除最高分和最低分后为[80,81,84],平均分为81.6666667,保留一位小数后为81.7

select 
tag,
difficulty,
ROUND((sum(score)-max(score)-min(score))/(COUNT(score)-2),1) clip_avg_score
from
examination_info
JOIN
exam_record
using(exam_id)
where tag='SQL' and difficulty='hard';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值