zoukankan      html  css  js  c++  java
  • SQL Server排名或排序的函数

    SQL Server获得排名或排序的函数有如下几种:
    1、Rank():在结果集中每一条记录所在的排名位置,但排名可能不连续,例如:若同一组内有两个第一名,则该组内下一个名次直接跳至第三名
     
     select *,Rank() over (partition by modifieddate order by locationid ) as Rank from Production.ProductInventory 

    2、Dense_Rank():功能与Rank相似,但排名的数值是连续的,例如:若同一组内有两个第一名,则该组内下一个名次为第二名

    select *,dense_Rank() over (partition by modifieddate order by locationid ) as Rank from Production.ProductInventory 

    3、Row_Number():根据组显示每一条记录在该组中出现的位置,例如:若有两个第一名,则这两个第一名在一组内排名为1、2,下一组的排序仍从1开始,依次类推

    select *,row_number() over (partition by productid  order by productid ) as Rank from Production.ProductInventory 

    4、NTILE():根据指定的分组数量将结果集分区,并记录其在组中的位置。可以对结果集的数据排序后,按照指定的数量把结果集分成N组,并给予每组一个组编号,分组的方式很简单,将结果集的总记录数除以N,若有余数M,则前M组都多增一条记录,因此,并非所有的组都有相同的记录数,但多记录的组最多只有一条记录。

    select top 13 *,NTILE(2) over (partition by productid  order by locationid ) as Rank from Production.ProductInventory 

    上述四个函数语法格式相同,都要搭配OVER子句,而且要以指定切分或排序记录的方式,OVER子句定议格式如下:
    Over(【Partition BY <提供数值的描述方式>】 ORDER BY <字段> [DES|ASC])
    Partition BY 子句决定排名记录的分组方式,而Order By 子句决定每一组记录要如何排序,如果省略了Partition by 子句,则全部记录为一组

  • 相关阅读:
    各数据库连接maven配置
    在 windows 下配置 git 公共库
    java笔记2(观察者模式、内部类、输入输出)
    linux 常用命令的应用笔记
    Setting Up Google Code And Github With Git
    java笔记3(单元测试中的模式)
    Apache的配置
    Ubuntu安装常用工具
    MongoDB笔记1(安装配置、用户管理、查询与SQL比较)
    Redis的安装与配置
  • 原文地址:https://www.cnblogs.com/JamelAr/p/10273328.html
Copyright © 2011-2022 走看看