zoukankan      html  css  js  c++  java
  • 开窗函数over()中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 行受影响)

  • 相关阅读:
    新数学丛书《连分数》 习题 1.1
    连分数中一个有意思的小玩意儿
    无聊博文之:用同余的语言阐述欧几里德算法
    有向无环图
    Codeforces Round #658 (Div. 2)
    常用代码模板3——搜索与图论
    什么是动态规划?动态规划的意义是什么?(转自知乎)
    Codeforce:4C. Registration system (映射)
    C++与正则表达式入门
    常用代码模板4——数学知识
  • 原文地址:https://www.cnblogs.com/hlfei/p/3532555.html
Copyright © 2011-2022 走看看