• 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

  • 相关阅读:
    微信公众平台开发者中心安全模式消息体加解密实现
    AES对称加密算法原理
    Token验证失败
    PaySignKey
    UVA 11732
    lua中的pairs和ipairs差别
    【shell学习笔记】curl命令总结
    视频监控系统:C/S & B/S
    Android app开发中用户协议(使用条款)文字自己主动换行
    uva 10154
  • 原文地址:https://www.cnblogs.com/xiaohuizhenyoucai/p/10636747.html
Copyright © 2020-2023  润新知