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

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

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

WITH ExamInfo AS (
    SELECT exam_id,tag,difficulty
    FROM examination_info
    WHERE tag = 'SQL' AND difficulty = 'hard'
)

SELECT
    ei.tag,
    ei.difficulty,
    ROUND(avg(er.score), 1) AS clip_avg_score
FROM
    ExamInfo AS ei
JOIN
    exam_record er ON ei.exam_id = er.exam_id
WHERE
    er.score NOT IN (
        (SELECT MAX(score) FROM exam_record WHERE exam_id = ei.exam_id),
        (SELECT MIN(score) FROM exam_record WHERE exam_id = ei.exam_id)
    )
GROUP BY
    ei.tag, ei.difficulty;

解法一:用withExamInfo AS (...)创建一个临时的子查询,该子查询返回符合条件的考试信息的eaxm_id,tag,difficulty

解法二 :来自题解

select tag, difficulty,
ROUND((SUM(er.score) - MAX(er.score) - MIN(er.score)) / (COUNT(er.score) - 2), 1) AS clip_avg_score
FROM examination_info AS ei
JOIN exam_record AS er using(exam_id)
WHERE ei.tag = 'SQL' AND ei.difficulty = 'hard'

using 是对有相同的列两个表进行合并

全部评论

相关推荐

12-05 18:09
已编辑
广东药科大学 后端工程师
点赞 评论 收藏
分享
11-03 13:18
门头沟学院 Java
包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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