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

    partition by关键字是分析性函数的一部分,它和聚合函数(如group by)不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,

    partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组。

    partition by 与group by不同之处在于前者返回的是分组里的每一条数据,并且可以对分组数据进行排序操作。后者只能返回聚合之后的组的数据统计值的记录。

    Demo

    数据库表结构 学生成绩表 UserGrade

    Id int Checked 主键Id
    Name varchar(50) Checked 学生名
    Course varchar(50) Checked 课程名
    Score int Checked 分数


    01、把每个人学生的成绩按照升序排名 (思路:根据学生姓名分组 根据每个人成绩排序)

    sql语句

    select *,ROW_NUMBER() over( partition by Name order by Score )排名
    from UserGrade

    查询结果

    Id Name Course Score 排名
    1004 李四 数学 60 1
    1005 李四 语文 80 2
    1001 李四 英语 100 3
    1007 王五 数学 30 1
    1006 王五 语文 50 2
    1003 王五 英语 50 3
    1008 张三 英语 60 1
    1000 张三 语文 80 2
    1002 张三 数学 90 3

    02、把每个学科的成绩分别进行排名 (思路:根据学科分组 根据成绩排序)

    sql语句

    select *,ROW_NUMBER() over( partition by Course order by Score )排名
    from UserGrade

    查询结果

    Id Name Course Score 排名
    1002 张三 数学 90 1
    1004 李四 数学 60 2
    1007 王五 数学 30 3
    1001 李四 英语 100 1
    1008 张三 英语 60 2
    1003 王五 英语 50 3
    1000 张三 语文 80 1
    1005 李四 语文 80 2
    1006 王五 语文 50 3

  • 相关阅读:
    不同数据类型的取值范围
    反正切函数求圆周率 atan
    HDOJ 1106
    HDOJ 1596
    HDOJ 1026 dfs路径保存
    qsort用法总结
    HDOJ 2088
    HDOJ 1878 欧拉回路 nyoj 42一笔画问题
    HDOJ 1863 prim算法 HDOJ 1879
    HDOj 1010 DFS优化
  • 原文地址:https://www.cnblogs.com/jasonlai2016/p/10167138.html
Copyright © 2011-2022 走看看