我们在写SQL代码时,只要有排序,首先想到的肯定是ORDER BY,以至于好多小伙伴觉得排序多简单啊。

今天就给大家介绍四个你不怎么常用排序函数,他们就是SQL Server排序中经常用到的ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()这四个好兄弟。

我们先创建一个测试数据表Scores

WITH t AS
(SELECT 1 StuID,70 Score
UNION ALL
SELECT 2,85
UNION ALL
SELECT 3,85
UNION ALL
SELECT 4,80
UNION ALL
SELECT 5,74
)
SELECT * INTO Scores FROM t;
SELECT * FROM Scores

结果如下:

1、ROW_NUMBER()

定义:ROW_NUMBER()函数作用就是将SELECT查询到的数据进行排序,每一条数据加一个序号,他不能用做于学生成绩的排名,一般多用于分页查询,比如查询前10个 查询10-100个学生。

1.1 对学生成绩排序

示例

SELECT
ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;

(提示:可以左右滑动代码)

结果如下:

这里RANK就是每个学生的排名后的次序, 根据Score进行DESC倒序

1.2 获取第2名的成绩信息

SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores
) t WHERE t.RANK=2;

结果:

这里用到的思想就是 分页查询的思想 在原sql外再套一层SELECT
WHERE t.RANK>=1 AND t.RANK<=3 是不是就是获取前三名学生的成绩信息了。

2、RANK() 

定义:RANK()函数,顾名思义排名函数,可以对某一个字段进行排名,这里和ROW_NUMBER()有什么不一样呢?ROW_NUMBER()是排序,当存在相同成绩的学生时,ROW_NUMBER()会依次进行排序,他们序号不相同,而Rank()则不一样。如果出现相同的,他们的排名是一样的。下面看例子:

示例

SELECT ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;SELECT RANK() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;

结果:

上面是ROW_NUMBER()函数的结果,下面是RANK()函数的结果。

当出现两个学生成绩相同是里面出现变化。RANK()是1-1-3-4-5,而ROW_NUMBER()则还是1-2-3-4-5,这就是RANK()和ROW_NUMBER()的区别了

3、DENSE_RANK() 

定义:DENSE_RANK()函数也是排名函数,和RANK()功能相似,也是对字段进行排名,那它和RANK()到底有什么不同那?特别是对于有成绩相同的情况,DENSE_RANK()排名是连续的,RANK()是跳跃的排名,一般情况下用的排名函数就是RANK() 我们看例子:

示例

SELECT
RANK() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;SELECT
DENSE_RANK() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;

结果:

上面是RANK()的结果,下面是DENSE_RANK()的结果

4、NTILE()

定义:NTILE()函数是将有序分区中的行分发到指定数目的组中,各个组有编号,编号从1开始,就像我们说的'分区'一样 ,分为几个区,一个区会有多少个。  

SELECT NTILE(1) OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;SELECT NTILE(2) OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;SELECT NTILE(3) OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;

结果:

就是将查询出来的记录根据NTILE函数里的参数进行平分分区。

这几兄弟就介绍完了,觉得不错记得帮忙转发分享给更多人

最后给大家分享我写的SQL两件套:《SQL基础知识第二版》《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。

有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行

数据前线

后台回复关键字:1024,获取一份精心整理的技术干货

后台回复关键字:进群,带你进入高手如云的交流群

推荐阅读
  • SQL 常用函数

  • 不懂就问:SQL 语句中 where 条件后 写上1=1 是什么意思

  • 推荐一个 SQL 学习刷题网站!

  • SQL 中为什么经常要加NOLOCK?

  • 执行count(1)、count(*) 与 count(列名) 到底有什么区别?

SQL中常用的四个排序函数相关推荐

  1. SQL中常用的窗口函数(排序函数)-row_number/rank/dense_rank/ntile

    总结四个函数的特点: row_number():连续不重复:1234567 rank() :重复不连续:1222567 dense_rank():重复且连续:1222345 ntile():平均分组: ...

  2. 数据处理中常用的Excel基本操作及函数

    数据处理中常用的Excel基本操作及函数-生信基础版 文章目录 数据处理中常用的Excel基本操作及函数-生信基础版 第一部分:键盘快捷键操作 一.CTRL系列 二.其他系列 第二部分:Excel函数 ...

  3. java中常用的几种排序算法--常见笔试面试

    转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...

  4. sql 中实现打乱数据的排序

    sql 中实现打乱数据的排序 order by NEWID() 就实现了数据的打乱  转载于:https://www.cnblogs.com/yangjinwang/p/3998271.html

  5. 【温故知新】——原生js中常用的四种循环方式

    一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0   网页输出"欢迎下次光临" 在网页中弹出框输入1   网页输 ...

  6. pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam

    来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言     很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...

  7. Sql中TO_DAYS,DATE_SUB等时间函数介绍

    Sql中TO_DAYS,DATE_SUB等时间函数介绍 TO_DAYS 获取当前时间 DATE_SUB(date,INTERVAL expr type)函数 DATEDIFF() 函数 ADDDATE ...

  8. 自动驾驶中常用的四类机器学习算法

    来源:智车科技 机器学习算法已经被广泛应用于自动驾驶各种解决方案,电控单元中的传感器数据处理大大提高了机器学习的利用率,也有一些潜在的应用,比如利用不同外部和内部的传感器的数据融合(如激光雷达.雷达. ...

  9. php常用的四种排序算法

    纯当练习,高手请绕过.以一维数组为例. 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49 ...

最新文章

  1. 查单个值用什么resultset_视光门诊日记—为什么两个医院查的视力不一样
  2. python具有可扩展的特性吗_1. 以下()不是python的特征 A 、 收费使用 B 、 跨平台 C 、 可拓展 D 、 可嵌入...
  3. requests, Beautifusoup 爬取新浪新闻资讯
  4. CSS 用户界面样式
  5. java 快速框架下载_Aria:简单易用、高效的下载框架(Java)
  6. [转帖]Mootools源码分析-23 -- Selectors-2
  7. python下实现一致性hash
  8. 实验一:端口扫描(X-scan)
  9. 将数组文件转换成bin格式文件
  10. 计算机设备故障,计算机常见硬件故障及其原因
  11. android mmdd 时间问题
  12. 小米9开发版已开启Android,小米9 MIUI安卓10开发版已开始推送,建议大家不要去升级...
  13. Android高级界面设计
  14. 如何给自己的U盘自定义图标
  15. CSS兼容性技巧整理从IE6-IE9 火狐谷歌浏览器兼容
  16. Euler配置yum源
  17. 追风人拍到壮观龙卷风
  18. 计算机信息技术指哪些专业,信息技术类专业包括哪些
  19. 论文阅读:Analysis of Scoliosis From Spinal X-Ray Images
  20. 多项式计算大模拟:csp202112-3登机牌条码

热门文章

  1. MotionVenus·MotionBuilder实时插件
  2. 案例10:设置商业服务网点的高层住宅防火案例分析
  3. 华为云核心java_java核心
  4. 求函数f(x)=sinx的导数,证明(sinx)'=cosx,详细过程
  5. 基于vant的移动端黑马头条知识点总结
  6. ipad pro和kindle oasis那个是更好的看书工具?
  7. Avito Cool Challenge 2018 B. Farewell Party 【YY】
  8. 基于TADF分子Br-DBPzDCN,DMAC-Ph-DBPzDCN,DPA-Ph-DBPzDCN的快速响应室温平面型氨气敏传感器
  9. 2022-2027(新版)中国高温硫化硅橡胶行业产销状况与需求规模预测报告
  10. 计算机组装与维修作者闫从丰,计算机组装与维修英文参考文献 计算机组装与维修论文参考文献数量是多少...