排名函数是sqlserver经常用到的函数,在分页的时候需要用,分组的时候也要用,主要排名函数有row-number,rank(),dense-rank(),NTILE()

row-number

row_number的用途的非常广泛,排序最好用他,一般可以用来实现web程序的分页,他会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号。
用法实例:
SELECT ROW_NUMBER() OVER(ORDER BY SubTime DESC) AS row_num,* FROM dbo.[Order]

图中的row_num列就是row_number函数生成的序号列,其基本原理是先使用over子句中的排序语句对记录进行排序,然后按照这个顺序生成序号。over子句中的order by子句与SQL语句中的order by子句没有任何关系,这两处的order by 可以完全不同,如以下sql,over子句中根据SubTime降序排列,Sql语句中则按TotalPrice降序排列

select ROW_NUMBER() OVER(order by [SubTime] desc) as row_num,* from [Order] order by [TotalPrice] desc

RANK

rank函数用于返回结果集的分区内每行的排名, 行的排名是相关行之前的排名数加一,简单来说rank函数就是对查询出来的记录进行排名,与row_number函数不同的是,rank函数考虑到了over子句中排序字段值相同的情况,如果使用rank函数来生成序号,over子句中排序字段值相同的序号是一样的,后面字段值不相同的序号将跳过相同的排名号排下一个,也就是相关行之前的排名数加一,可以理解为根据当前的记录数生成序号,后面的记录依此类推
select RANK() OVER(order by [UserId]) as rank,* from [Order]

NTILE

ntile函数可以对序号进行分组处理,将有序分区中的行分发到指定数目的组中。 各个组有编号,编号从一开始。 对于每一个行,ntile 将返回此行所属的组的编号。这就相当于将查询出来的记录集放到指定长度的数组中,每一个数组元素存放一定数量的记录。ntile函数为每条记录生成的序号就是这条记录所有的数组元素的索引(从1开始)。也可以将每一个分配记录的数组元素称为“桶”。ntile函数有一个参数,用来指定桶数。
select NTILE(4) OVER(order by [SubTime] desc) as ntile,* from [Order]

ntile函数的分组依据(约定):

1、每组的记录数不能大于它上一组的记录数,即编号小的桶放的记录数不能小于编号大的桶。也就是说,第1组中的记录数只能大于等于第2组及以后各组中的记录数。

2、所有组中的记录数要么都相同,要么从某一个记录较少的组(命名为X)开始后面所有组的记录数都与该组(X组)的记录数相同。也就是说,如果有个组,前三组的记录数都是9,而第四组的记录数是8,那么第五组和第六组的记录数也必须是8。

sqlserver排名函数相关推荐

  1. SQLServer RANK() 排名函数、其他相关函数

    一.Rank()函数例子 (1)默认查询及对应字段 as 别名 select FOURCARD as 组名,WCBL 金额进度,tbje as 同比金额,HUBI as 环比金额 from a (2) ...

  2. sql 除以_不可思议的SQL排名函数,被您无视了么?

    经常写SQL脚本的朋友,对查询的多样化要求可能会经常头疼.数据库SQL的语法是固定的.但应用要求却是千差万别的.依靠我们所掌握的知识,大部分的查询需求我们还是有办法的解决的,但总有那么一些要求,把我们 ...

  3. SQLServer之函数简介

    用户定义函数定义 与编程语言中的函数类似,SQL Server 用户定义函数是接受参数.执行操作(例如复杂计算)并将操作结果以值的形式返回的例程. 返回值可以是单个标量值或结果集. 用户定义函数准则 ...

  4. excel排名_WPS-Excel表格实用技巧——排位排名函数(RANK函数)的使用

    平时使用excel表格处理数据时经常会用到排序功能,一般使用"升序"和"降序"工具按钮就可以完成简单的排序任务,但是当我们遇到相同数值在总体中的排名时,简单的& ...

  5. SQL2005 四个排名函数(row_number、rank、dense_rank和ntile)的比较

    排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数row_number.rank.dense_rank和ntile,需要的朋友可以参考下. 排名函数是 ...

  6. SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

    Sql 四大排名函数(ROW_NUMBER.RANK.DENSE_RANK.NTILE)简介 排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Ord ...

  7. Oracle 数据库数据排名函数:rank() 和dense_rank() 。

    Oracle 数据库数据排名函数:  rank() 和dense_rank() . --------------------------------------------间断排名(也称强制排名)   ...

  8. SQL点滴20—T-SQL中的排名函数

    提到排名函数我们首先可能想到的是order by,这个是排序,不是排名,排名需要在前面加个名次序号的,order by是没有这个功能的.还可能会想到identity(1,1),它也给了一个序号,但是不 ...

  9. SqlServer系统函数

    SqlServer系统函数 enjoyasp.net sql server 0 Comments 发表评论 1,@@SERVERNAME 返回运行 Microsoft® SQL Server™ 的本地 ...

最新文章

  1. dis的前缀单词有哪些_英语单词词根.词缀II 5个最高频英语前缀 必背
  2. JZOJ 5662. 【GDOI2018Day1模拟4.17】尺树寸泓
  3. 设计模式的分类和六大设计原则
  4. sharepoint 概念及认证方式介绍
  5. 用 @Value(“${xxxx}“)注解从配置文件读取值的用法
  6. 转:判断Caps Lock键是否打开,如果打开则关闭
  7. Web存储—localStorage存储
  8. Linux策略性路由应用及深入分析(iproute2)
  9. 经典手眼标定算法之Navy的OpenCV实现
  10. theano 编程细节
  11. 计算机桌面锁定了没设密码怎么解锁,电脑桌面锁屏怎么设置,电脑怎么给手机解锁...
  12. 【抽象代数】半群、子群、商群
  13. 跨境电商shopee这个平台怎么样?百万shopee卖家笑了,不要再犹豫了
  14. 0x0F转换成二进制
  15. 黎曼猜想 量子计算机,理解黎曼猜想(一)背景
  16. 中征征信java_征信接口调用,解析(xml)
  17. vue 页面刷新404
  18. 像呼吸空气一样呼吸创意
  19. Java技术学习网,是我们日常学习不可欠缺的
  20. c语言用指针分离字符串数字与字符,c语言实验报告,指针的应用分别输出字符串中的数字和其他字符(共10篇).docx...

热门文章

  1. C语言:用头插入法建立链表
  2. 原生 js 拦截所有ajax请求 可用于油猴子
  3. python数字图像处理笔记10 图像旋转
  4. 看看别人是怎么面试蚂蚁金服的!社招Java面经分享
  5. 暗影精灵3开机黑屏解决方案
  6. 西电计算机c1-1测试题,【2017年整理】西电计算机接口习题2.doc
  7. 强力推荐各位攻城狮查看,收藏IT职业技能图谱(全套13张)
  8. 计算机一级b在线模拟,计算机一级b级考试模拟试题及答案
  9. webix, DataTable组件,给表头增加Tooltip
  10. 报错org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1