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

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

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即可找到大于平均分的最小成绩。

全部评论

相关推荐

05-26 09:07
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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