• SQL技术内幕-4 row_number() over( partition by XX order by XX)的用法(区别于group by 和order by)


    【转载】原文章来自于 http://www.cnblogs.com/alphafly/p/4233759.html

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

     
    create database StudentDB
    go
     
    use StudentDB
    go
     
    create table Student  --学生成绩表
    (
     id int,  --主键
     Grade int--班级
     Score int --分数
    )
    go
     
    insert Student
        select 1,1,88
    union all select 2,1,66
    union all select 3,1,75
    union all select 4,2,30
    union all select 5,2,70
    union all select 6,2,80
    union all select 7,2,60
    union all select 8,3,90
    union all select 9,3,70
    union all select 10,3,80
     
    go
     
    --所有学生信息
    select from Student
     
    id          Grade       Score
    ----------- ----------- -----------
    1           1           88
    2           1           66
    3           1           75
    4           2           30
    5           2           70
    6           2           80
    7           2           60
    8           3           90
    9           3           70
    10          3           80
     
    (10 行受影响)
     
    --不分班按学生成绩排名
    select *,ROW_NUMBER() over(order by Score descas Sequence from Student
     
    id          Grade       Score       Sequence
    ----------- ----------- ----------- --------------------
    8           3           90          1
    1           1           88          2
    6           2           80          3
    10          3           80          4
    3           1           75          5
    9           3           70          6
    5           2           70          7
    2           1           66          8
    7           2           60          9
    4           2           30          10
     
    (10 行受影响)
     
    --分班后按学生成绩排名
    select *,row_number() over(partition by Grade order by Score descas Sequence from Student
     
    id          Grade       Score       Sequence
    ----------- ----------- ----------- --------------------
    1           1           88          1
    3           1           75          2
    2           1           66          3
    6           2           80          1
    5           2           70          2
    7           2           60          3
    4           2           30          4
    8           3           90          1
    10          3           80          2
    9           3           70          3
     
    (10 行受影响)
     
    个人总结:order by排序时对partition by 了的字段无效。
     
  • 相关阅读:
    LiveGBS接入LiveQing流媒体服务实现摄像头云端录像和和直播以及大屏展示
    摄像头网络直播方案LiveGBS部署问题 使GB28181实现无插件web直播
    Linux 查看磁盘读写速度IO使用情况
    安防监控摄像头接入云端实现直播、录像和大屏展示
    H265摄像头如何实现网页直播
    解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
    H5实现无插件视频监控按需直播
    LiveQing视频云平台部署实践
    将RTSP网络摄像机进行网页和微信直播的方案
    Android虚拟机运行问题之小结
  • 原文地址:https://www.cnblogs.com/ghw0501/p/5900644.html
Copyright © 2020-2023  润新知