• 分析函数partition by


    partition by

    分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:分析函数对于每个组返回多行,而聚合函数对于每个组只返回一行

    partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,分区函数一般与排名函数一起使用。

    测试数据

    create table Student  --学生成绩表
    (
     id int,  --主键
     Grade int, --班级
     Score int --分数
    )
    go
    
    insert into Student values(1,1,88)
    insert into Student values(2,1,66)
    insert into Student values(3,1,75)
    insert into Student values(4,2,30)
    insert into Student values(5,2,70)
    insert into Student values(6,2,80)
    insert into Student values(7,2,60)
    insert into Student values(8,3,90)
    insert into Student values(9,3,70)
    insert into Student values(10,3,80)
    insert into Student values(11,3,80)
    

    img

    一、分区函数Partition By的与row_number()的用法

    1、不分班按学生成绩排名

    select *,row_number() over(order by Score desc) as Sequence from Student
    

    执行结果:

    img

    2、分班后按学生成绩排名

    select *,row_number() over(partition by Grade order by Score desc) as Sequence from Student
    

    执行结果:

    img

    3、获取每个班的前1(几)名

    select * from
    (
    select *,row_number() over(partition by Grade order by Score desc) as Sequence from Student
    )T where T.Sequence<=1
    

    执行结果:

    img

    二、分区函数Partition By与排序rank()的用法

    rank()和dense_rank()区别:

    • rank()是跳跃排序,有两个第二名时接下来就是第四名;
    • dense_rank()l是连续排序,有两个第二名时仍然跟着第三名

    1、分班后按学生成绩排名 该语句是对分数相同的记录进行了同一排名,例如:两个80分的并列第2名,第4名就没有了

    select *,rank() over(partition by Grade order by Score desc) as Sequence from Student
    

    执行结果:

    img

    2、获取每个班的前2(几)名 该语句是对分数相同的记录进行了同一排名,例如:两个80分的并列第2名,第4名就没有了

    select * from
    (
    select *,rank() over(partition by Grade order by Score desc) as Sequence from Student
    )T where T.Sequence<=2
    

    执行结果:

    img

  • 相关阅读:
    自己动手,制作真正的.net Framework 3.5 SP1离线安装包(转)
    理解lvalue和rvalue
    Android webView 支持缩放及自适应屏幕
    微信打赏小程序寻投资或买断代码
    微信批量关注公众号,推送消息软件介绍
    QQ微信号数据库 微信号采集 可区分性别地区1-100万个
    给客户开发的 贵金属喊单视频直播间 财经直播间系统
    揭秘:各大视频网站是这样密谋秀场的
    类似YY 9158网页版多人语音视频聊天室远程教学系统源码
    WEB网页视频会议系统源码
  • 原文地址:https://www.cnblogs.com/qzkuan/p/15464470.html
Copyright © 2020-2023  润新知