题解 | #SQL类别高难度试卷得分的截断平均值#

SQL类别高难度试卷得分的截断平均值

https://www.nowcoder.com/practice/a690f76a718242fd80757115d305be45

题目描述

牛客的运营同学想要查看大家在SQL类别高难度试卷的得分情况。

要求

从考试记录的表(exam_record)中,计算 hard 难度的 得分平均值,要求去掉一个最大值和最小值。

解题过程

将测试数据导入到本地数据库

先查询确认一下 标记为 hard ,tag 为sql的答题记录

select * from examination_info as t

inner join exam_record t1 on t.exam_id = t1.exam_id

where tag = 'SQL' and difficulty = 'hard'

可以看到是有没有答完题目的情况。

结合介绍部分提供的示例,可以判断需要有分数的才统计在内。

答案

1、使用聚合函数

select tag,difficulty,

round((sum(score)-min(score)-MAX(score))/(count(score)-2),1) as clip_avg_score

 from examination_info as t

inner join exam_record t1 on t.exam_id = t1.exam_id

where tag = 'SQL' and difficulty = 'hard' and score is not NULL

group by tag,difficulty

由于只去掉一个最高值和一个最低值,使用聚合函数是比较简单的。
且分母不算没有分数的。
这里其实不加 score is not null 更通用一些,因为 聚合函数(列)都是对非null进行求职。

加上了就更好理解一点。

2、使用窗口函数

select "SQL" tag,"hard" as difficulty, round(avg(score), 1) as clip_avg_score

from(

select tag, difficulty, score,

    row_number() over(order by score asc) as rk_asc,

    row_number() over(order by score desc) as rk_desc

from examination_info as i

join exam_record as r

on i.exam_id = r.exam_id

where tag = 'SQL' and difficulty = 'hard' and score is not null) as t

where rk_asc <> 1 and rk_desc <> 1

逻辑就是先对所有的成绩进行排序,然后再剔除第一名和最后一名。

因为不想加group by 所用使用了添加辅助列的方式,这样在严格模式下也不会报错。

这里由于只有一个分组,所以把结果看成一张大表,所以没有partition by
.

全部评论

相关推荐

评论
2
1
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
4609次浏览 48人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16929次浏览 137人参与
# MiniMax求职进展汇总 #
25301次浏览 322人参与
# 沪漂/北漂你觉得哪个更苦? #
1690次浏览 41人参与
# 你的实习产出是真实的还是包装的? #
3261次浏览 54人参与
# 春招至今,你的战绩如何? #
16231次浏览 147人参与
# 米连集团26产品管培生项目 #
7430次浏览 228人参与
# HR最不可信的一句话是__ #
1135次浏览 33人参与
# AI面会问哪些问题? #
1000次浏览 25人参与
# 你做过最难的笔试是哪家公司 #
1336次浏览 23人参与
# AI时代,哪个岗位还有“活路” #
3002次浏览 53人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152967次浏览 889人参与
# 简历第一个项目做什么 #
32209次浏览 364人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8035次浏览 43人参与
# XX请雇我工作 #
51165次浏览 171人参与
# 简历中的项目经历要怎么写? #
311176次浏览 4273人参与
# 投格力的你,拿到offer了吗? #
178408次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77024次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
64881次浏览 895人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187657次浏览 1123人参与
# 你怎么看待AI面试 #
180917次浏览 1322人参与
# 正在春招的你,也参与了去年秋招吗? #
364434次浏览 2642人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务