题解 | #得分不小于平均分的最低分#

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

https://www.nowcoder.com/practice/3de23f1204694e74b7deef08922805b2

/*
将两个表连接起来,SELECT成绩,并且增加一列按照tag分组计算成绩均值,形成新的表T。将T的成绩升序排序,LIMIT 1。
*/
WITH T AS(
    SELECT er.score, AVG(er.score) OVER(PARTITION BY ei.tag) AS avg
    FROM exam_record er
    INNER JOIN examination_info ei
    USING (exam_id)
    WHERE ei.tag = 'SQL'
)
SELECT score AS min_score_over_avg FROM T
WHERE score >= avg
ORDER BY score
LIMIT 1

将exam_record和examination_info连接起来形成新的表T,并且在T中增加一列按照tag分组的平均成绩,用窗口函数。因为最终只需要显示score,所以表T只需要score字段和平均分字段。

在T中筛选score大于等于平均分的行即可,升序排序,LIMIT 1即可找到大于平均分的最小成绩。

全部评论

相关推荐

06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务