• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SQL开窗函数-排序rank、dense_rank、row_number

武飞扬头像
纠结安然猿
帮助1

1、注意:

partition by 相当于 group by 分组的作用,可不加;desc 表示倒序排序,默认是正序

2、RANK()

说明:在进行排序时,如果有相同位次,会赋予与上一个名次相同的名次,并将下一位进行 1排序。例如,有3条数据排在第1位,2条数据排在第二位时,排序为:1,1,1,4,4,6······

代码示例:对第一次月考班级成绩进行排名 rank() over(partition by *** order by *** desc)

select

        calss_name 班级名称

        ,student_name 学生姓名

        ,student_achievement 学生成绩

        ,rank() over(partition by calss_name order by student_achievement desc) rank

from 学生成绩信息表

where 考试类目 = '第一次月考'

结果示例:

        班级名称       学生姓名      学生成绩     rank

        大数据二班    常三飞           98              1

        大数据二班    常中新           98              1

        大数据二班    杨    夺           96              3

        大数据二班    欧明健           96              3

        大数据二班    郭志高           95              5

        大数据二班    李绍幸           92              6

3、DENSE_RANK()

说明:在进行排序时,如果有相同位次,会赋予与上一个名次相同的名次,并将下一位进行顺排。例如,有3条数据排在第1位,2条数据排在第二位时,排序为:1,1,1,2,2,3······

代码示例:对第一次月考班级成绩进行排名 dense_rank() over(partition by *** order by *** desc)

select

        calss_name 班级名称

        ,student_name 学生姓名

        ,student_achievement 学生成绩

        ,dense_rank() over(partition by calss_name order by student_achievement desc) d_rank

from 学生成绩信息表

where 考试类目 = '第一次月考'

结果示例:

        班级名称       学生姓名      学生成绩     d_rank

        大数据二班    常三飞           98              1

        大数据二班    常中新           98              1

        大数据二班    杨    夺           96              2

        大数据二班    欧明健           96              2

        大数据二班    郭志高           95              3

        大数据二班    李绍幸           92              4

4、ROW_NUMBER()

说明:在进行排序时,每一位都要不同的序号,即便数据相同,也会随机安排前后位次。例如,有3条数据排在第1位,2条数据排在第二位时,排序为:1,2,3,4,5,6······

代码示例:对第一次月考班级成绩进行排名 row_number() over(partition by *** order by *** desc)

select

        calss_name 班级名称

        ,student_name 学生姓名

        ,student_achievement 学生成绩

        ,row_number() over(partition by calss_name order by student_achievement desc) n_rank

from 学生成绩信息表

where 考试类目 = '第一次月考'

结果示例:

        班级名称       学生姓名      学生成绩     d_rank

        大数据二班    常三飞           98              1

        大数据二班    常中新           98              2

        大数据二班    杨    夺           96              3

        大数据二班    欧明健           96              4

        大数据二班    郭志高           95              5

        大数据二班    李绍幸           92              6

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggcecc
系列文章
更多 icon
同类精品
更多 icon
继续加载