SQL Server排名或排序的函数
程序员文章站
2022-04-13 15:47:05
SQL Server获得排名或排序的函数有如下几种: 1、Rank():在结果集中每一条记录所在的排名位置,但排名可能不连续,例如:若同一组内有两个第一名,则该组内下一个名次直接跳至第三名 select *,Rank() over (partition by modifieddate order b ......
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 子句,则全部记录为一组
上一篇: js函数中this指向的问题代码实例分析
下一篇: 土豆削皮隔夜怎么保存?给你说6个方法
推荐阅读
-
SQL SERVER函数之深入表值函数的处理分析
-
SQL Server 排序函数 ROW_NUMBER和RANK 用法总结
-
sql server自动生成拼音首字母的函数
-
ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER()排序函数)
-
ms sql server中实现的unix时间戳函数(含生成和格式化,可以和mysql兼容)
-
Sql Server 2012 转换函数的比较(Cast、Convert和Parse)
-
Sql Server中常用的6个自定义函数分享
-
SQL Server 日期函数CAST 和 CONVERT 以及在业务中的使用介绍
-
Sql Server函数的操作实例(执行多条语句,返回Select查询后的临时表)
-
SQL SERVER函数之深入表值函数的处理分析