• 新闻资讯
  • 公司新闻
  • 行业新闻
  • bob棋牌安卓下载设计技术
  • bob棋牌安卓下载优化推广
  • bob棋牌安卓下载建设知识
  • 建站常见问题
  • 关于我们
  • 公司简介
  • 服务理念
  • 招贤纳士
  • 联系我们
  • 海南bob棋牌安卓下载建设新闻
    您当前位置:海南bob棋牌安卓下载建设首页 >> 海南bob棋牌安卓下载建设新闻 >> bob棋牌安卓下载设计技术
  • 公司新闻
  • 行业新闻
  • bob棋牌安卓下载设计技术
  • bob棋牌安卓下载优化推广
  • bob棋牌安卓下载建设知识
  • 建站常见问题
  • 海南微信资讯
  • 海南电脑维修资讯
  • 杂文趣事
  • 海口bob棋牌安卓下载建设新闻

    sqlserver中分区函数 partition by的用法

    时间: 2019-03-28 来源:互联网 作者: 点击:0

     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

    相关文章