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

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

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

select 
    tag
    ,difficulty
    ,round(sum(score)/(rnk_max-2),1) as clip_avg_score
from
(
    select
        *
        ,max(rnk) over(partition by exam_id) as rnk_max
    from
    (
        select
            a.exam_id
            ,b.tag
            ,b.difficulty
            ,score
            ,row_number() over(partition by a.exam_id order by a.score) as rnk
        from 
        (
            select * from exam_record where submit_time is not null
        ) a 
        join 
        (
            select *
            from examination_info
            where tag='SQL'
            and difficulty='hard'
        ) b on a.exam_id=b.exam_id
    ) t
) i
where rnk!=1
and rnk!=rnk_max
group by 
    tag
    ,difficulty

考虑到了可能有多个SQL难题的情况用了groupby

去掉最大值用了max的窗口函数,也可以再用一个row_number的倒序

稳健的、可拓展性写法

全部评论

相关推荐

牛客316659795号:不是,证明hr初筛已经过了,要投给部门筛一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务