zoukankan      html  css  js  c++  java
  • sqlserver中分区函数 partition by的用法

    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 desc) as 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 desc) as 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 行受影响)

  • 相关阅读:
    《C语言》for语句(8)
    解决vue vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in nextTick: “TypeError: Cannot convert undefine
    React中WebSocket使用以及服务端崩溃重连
    React Native 中 react-navigation 导航器的使用 [亲测可用]
    ueditor 修改内容方法报错no funtion解决方式
    nodeJs与elementUI实现多图片上传
    Vue多页面开发案例
    Vue.js Cli 3.0 多页面开发案例解析
    基于node.js 微信支付notify_url回调接收不到xml
    react-image-gallery 加入视频图片混合显示
  • 原文地址:https://www.cnblogs.com/PearlRan/p/4833032.html
Copyright © 2011-2022 走看看