题解 | #各用户等级的不同得分表现占比#

各用户等级的不同得分表现占比

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

-------------------完整代码--------------------
select level, score_grade, round(defen_num/(sum(defen_num)over(partition by level)),3) as ratio
from(
    select level, score_grade, count(*) as defen_num
    from (
        select uid, case
        when score>=90 then '优'
        when score<90 and score>=75 then '良'
        when score<75 and score>=60 then '中'
        when score<60 and score is not null then '差'
        end as score_grade
        from exam_record
        where score is not null
    ) k1
    join user_info ui
    on k1.uid = ui.uid
    group by level, score_grade
) k2
order by level desc, ratio desc;

具体思路是:

(1)先查询各条已完成的试卷作答记录的用户id和等级情况(其他字段不需要用于计算,就不要查询)

(2)统计不同用户等级的人在完成过的试卷中各得分等级的记录数目

(3)最后使用窗口函数基于(2)表统计不同用户等级的人在完成过的试卷中各得分等级占比

# 查询各条已完成的试卷作答记录的用户id和等级情况
select uid, case
when score>=90 then '优'
when score<90 and score>=75 then '良'
when score<75 and score>=60 then '中'
when score<60 and score is not null then '差'
end as score_grade
from exam_record
where score is not null
# 统计不同用户等级的人在完成过的试卷中各得分等级的记录数目
select level, score_grade, count(*) as defen_num
from (
    select uid, case
    when score>=90 then '优'
    when score<90 and score>=75 then '良'
    when score<75 and score>=60 then '中'
    when score<60 and score is not null then '差'
    end as score_grade
) k1
join user_info ui
on k1.uid = ui.uid
group by level, score_grade
# 统计不同用户等级的人在完成过的试卷中各得分等级占比(使用窗口函数)
select level, score_grade, round(defen_num/(sum(defen_num)over(partition by level)),3) as ratio
from(
    select level, score_grade, count(*) as defen_num
    from (
        select uid, case
        when score>=90 then '优'
        when score<90 and score>=75 then '良'
        when score<75 and score>=60 then '中'
        when score<60 and score is not null then '差'
        end as score_grade
        from exam_record
        where score is not null
    ) k1
    join user_info ui
    on k1.uid = ui.uid
    group by level, score_grade
) k2
order by level desc, ratio desc;
全部评论

相关推荐

gelmanspar...:奖学金删掉,自我评价删掉,简历压缩一下,写一页
如果再来一次,你还会学机...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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