• 查找前几名


    1. 查找前几名

    --25、查询各科成绩前三名的记录:(不考虑成绩并列情况) --不考虑重复

    SELECT courseid,score,row_number() OVER

    (PARTITION BY courseid ORDER BY score DESC) AS rn FROM tblScore

    --考虑重复

    SELECT courseid,score,dense_rank() OVER

    (PARTITION BY courseid ORDER BY score DESC) AS rn FROM tblScore

    partition  by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,

    partition  by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组

    如果没有 partition by ---,他将根据 order by 的 score 进行排序,

    partition by(函数窗口说明)

    如果有 partition by courseID,他将根据 coureid进行分组,然后对分组的数据进行分别排序

    row_number()  不考虑有没有并列成绩的,直接按1,2,3---排序(如上图)

    dense_rank()  会考虑并列成绩,都是第一名就并列第一名(如下图)

  • 相关阅读:
    iOS 整理面试题(上)
    2021年十大白马名单
    RabbitMQ:消息重复消费
    RabbitMQ:保证消息的顺序性
    RabbitMQ:保证消息的可靠性传输
    AWS S3 大文件分片上传
    rebase 用法小结
    Flask at scale
    MySQL分区
    动态规划示例题
  • 原文地址:https://www.cnblogs.com/cfb513142804/p/4232263.html
Copyright © 2020-2023  润新知