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组,并给予每组一个组编号,分组的方式非常easy,将结果集的总记录数除以N,若有余数M,则前M组都多增一条记录,因此,并不是全部的组都有同样的记录数。但多记录的组最多仅仅有一条记录。

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

以上SQL语句均在SQL Server 2008下调试通过。使用AdventureWorks

上述四个函数语法格式同样,都要搭配OVER子句,并且要以指定切分或排序记录的方式,OVER子句定议格式例如以下:

Over(【Partition BY <提供数值的描写叙述方式>】 ORDER BY <字段> [DES|ASC])

Partition BY 子句决定排名记录的分组方式,而Order By 子句决定每一组记录要怎样排序,假设省略了Partition by 子句,则所有记录为一组

时间: 2024-11-08 21:54:36

SQL Server排名或排序的函数的相关文章

SQL server 模糊查询 排序 聚合函数 数学函数 字符串函数 时间日期函数 转换、函数转换

create database lianxi831  --创建数据库gouse lianxi831  --引用数据库gocreate table xs  --插入表格( code int not null,  --写入内容 name varchar(10), cid varchar(18), banji varchar(10), yufen decimal(18,2), shufen decimal(18,2), yingfen decimal(18,2),)goinsert into xs v

SQL Server 排名函数

内容摘要: Transact-SQL提供了4个排名函数: RANK(),DENSE_RANK(),ROW_NUMBER(),NTILE(),下文是对这4个函数进行的解释. 下面是对这4个函数的解释: RANK() 返回结果集的分区内每行的排名.行的排名是相关行之前的排名数加一. 如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名. 例如,如果两位销售员具有相同的SalesYTD值,则他们将并列第一.由于已有两行排名在前,所以具有下一个最大SalesYTD的销售人员将排名第三. 因此,R

SQL Server之 (三) 分组 类型转换函数 插入多条数据 字符串函数

SQL Server之 (三)  分组 类型转换函数  插入多条数据  字符串函数 自己学习笔记,转载请注明出处,谢谢!---酸菜 1.SQL 数据分组----Group by /Having  ①有一学生信息表:StuID/StuName/StuAge/StuGender/StuClassID; 求每个班级的ID和对应人数:select StuClassID 班级ID,count(*) 班级人数  from StuInfo group by StuClassID ; 求所有同学中男女同学对应人

SQL SERVER系统表和常用函数介绍

sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项sysdatabases 主数据库 服务器中的数据库syslanguages 主数据库 语言syslogins 主数据库 登陆帐号信息sysoledbusers 主数据库 链接服务器登陆信息sysprocesses 主数据库 进程 sysremotelogins主数据库 远程登录帐号syscolumn

SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)

原文:SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页) SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅途(www.Zuowenjun.cn) --CreateDate:2015-06-02 --Function:分页获取数据 /******************/ crea

深入理解SQL Server 2005 中的 COLUMNS_UPDATED函数

原文:深入理解SQL Server 2005 中的 COLUMNS_UPDATED函数 概述 COLUMNS_UPDATED函数能够出现在INSERT或UPDATE触发器中AS关键字后的任何位置,用来指示表或视图中有哪些列已被插入或者更新.它通常和IF语句一起使用,从而可以根据不同的结果,促使触发器执行不同的操作.因此在DML触发器中,COLUMNS_UPDATED函数是一个非常重要且有用的函数. 不同于UPDATE函数,COLUMNS_UPDATED函数可以工作在多个列中,它使用字节中的位(B

sql server 创建内联表值函数

表值函数就是返回table 的函数使用它可以方便的进行查询的处理 创建的代码如下: create FUNCTION returunclassfirstlist(  -- Add the parameters for the function here )RETURNS TABLE ASRETURN ( -- Add the SELECT statement with parameter references here select * from classfirst;) 我们在使用创建的函数的时

SQL SERVER 提供了一些时间函数:

SQL SERVER 提供了一些时间函数:取当前时间:select getdate()取前一个月的时间:SELECT DATEADD(MONTH,-1,GETDATE()) 月份减一个月取年份:SELECT YEAR( DATEADD(MONTH,-1,GETDATE())),Year 取年份取月份:SELECT MONTH( DATEADD(MONTH,-1,GETDATE())) ,month 取月份.如上,可通过对日期函数的各种组合,来达到目标.

SQL Server 2012 新的分页函数 OFFSET &amp; FETCH NEXT

DECLARE @page INT, @size INT;select @page = 300, @size = 10 SELECT *FROM gpcomp1.GPCUSTWHERE company like 'a%'ORDER BY CUSTNOOFFSET (@page -1) * @size ROWSFETCH NEXT @size ROWS ONLY; SQL Server 2012 新的分页函数 OFFSET & FETCH NEXT,布布扣,bubuko.com