文档章节

Oracle 排序分析函数之ROW_NUMBER、RANK和DENSE_RANK简析

源-代码
 源-代码
发布于 2016/06/24 19:43
字数 405
阅读 50
收藏 2
这三个函数都是排序函数,那么有什么不同呢,下面看个例子:
SQL> select empno,
  2         ename,
  3         deptno,
  4         sal,
  5         row_number() over(partition by deptno order by sal) sql_rownum,
  6         rank() over(partition by deptno order by sal) sql_rank,
  7         dense_rank() over(partition by deptno order by sal) as sal_denserank
  8    from emp;
EMPNO ENAME          DEPTNO        SAL SQL_ROWNUM   SQL_RANK SAL_DENSERANK
---------- ---------- ---------- ---------- ---------- ---------- -------------
      7934 MILLER             10       1300          1          1             1
      7782 CLARK              10       2450          2          2             2
      7839 KING               10       5000          3          3             3
      7369 SMITH              20        800          1          1             1
      7566 JONES              20       2975          2          2             2
      7902 FORD               20       3000          3          3             3
      7900 JAMES              30        950          1          1             1
      7521 WARD               30       1250          2          2             2
      7654 MARTIN             30       1250          3          2             2
      7844 TURNER             30       1500          4          4             3
      7499 ALLEN              30       1600          5          5             4
      7698 BLAKE              30       2850          6          6             5
已选择12行。
上面SQL中,这三个函数都采用deptno列进行分组,以列sal进行升序排序。
我们看empno为7900-7698的行。在相同分组和相同字段相同顺序排序的情况下:row_number函数只是单纯的返回行排序后的序号;rank函数在sal相同时,采用相同的行号,但是之后的行会继续按单纯的排序号继续编号;
dense_rank返回在结果,会在sal相同时采用相同的排序号,但是之后按上面的序号继续排序。
也就是我们通过说rank会跳号,dense_rank不会跳号。

本文转载自:http://www.cnblogs.com/zhaoshuangshuang/archive/2013/08/22/3275525.html

共有 人打赏支持
源-代码
粉丝 10
博文 9
码字总数 3999
作品 0
西安
后端工程师
私信 提问
oracle分析函数Rank, Dense_rank, row_number

一、使用rownum为记录排名: 在前面一篇《Oracle开发专题之:分析函数》,我们认识了分析函数的基本应用,现在我们再来考虑下面几个问题: ①对所有客户按订单总额进行排名 ②按区域和客户订...

Hyacinth_Yuan
2015/12/25
154
0
oracle的分析函数‘over’

分析函数语法: 例: sum(sal) over (partition by deptno order by ename) new_alias sum就是函数名 (sal)是分析函数的参数,每个函数有0~3个参数,参数可以是表达式,例如:sum(sal+comm) over...

0o清风徐来o0
2012/10/22
0
0
oracle 函数之分析函数

1.分析函数有4个 over rownumber denserank rank 四个 不能单独使用2.select empno, sal ,deptno,sum(sal) over(order by empno) , sum(sal) over() from emp; 视图如下 按照工资进行累加3 s......

天使不凡
2017/12/30
0
0
mysql8.0窗口函数:rank,dense_rank,row_number 使用上的区别

本节主要介绍排序类 rank,denserank,rownumber使用上的区别 RANK:跳跃排序 DENSERANK:连续排序 rownumber:没有重复值的排序[记录相等也是不重复的]可以进行分页使用。 案例: rank :跳跃式...

jingjing.wang
05/17
0
0
ORACEL学习--ORACLE统计分析函数

文章来自:ORACLE统计分析函数 一:准备条件 本文讲述Oracle分析函数用法,首先建库:Sql代码 然后插入实验数据:Sql代码 然后看看刚刚建好的库:Sql代码 二:统计函数 (1)sum函数,统计总合...

spinachgit
10/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一个案例彻底弄懂如何正确使用 mysql inndb 联合索引

摘要: 有一个业务是查询最新审核的5条数据 ```sql SELECT `id`, `title` FROM `th_content` WHERE `audit_time` < 1541984478 AND `status` = 'ONLINE' ORDER BY `audit_time` D. 原来链接 ......

阿里云官方博客
8分钟前
1
0
详解如何用爬虫采集视频播放量数据(以腾讯视频为例)

现代社会提到大数据大家都知道这是近几年才形成的对于数据相关的新名词,在1980年,著名未来学家阿尔文·托夫勒便在 《第三次浪潮》一书中,将大数据热情地赞颂为“第三次浪潮的 华彩乐章”...

技术阿飞
14分钟前
1
0
区块链时代的拜占庭容错:Tendermint(二)

原文题目:《Tendermint: Byzantine Fault Tolerance in the Age of Blockchains》 原文作者:Ethan Buchman 翻译:饶云坤 校对:傅晓波 本文为节选 以下为正文: 本章阐述Tendermint共识算法...

万向区块链
27分钟前
0
0
AS连接网易Mumu模拟器

1、安装模拟器 打开这个网址现在模拟器然后安装 http://mumu.163.com/ 2、安装完成后启动模拟器 3、进入模拟器安装目录 例如本机的安装目录:C:\Program Files (x86)\MuMu\emulator\nemu\vmo...

HGMrWang
33分钟前
9
0
设计要做到扩展性强还挺难的

概述 在日常开发中,有时候你的上司会跟你说,这个模块的设计扩展性要高。把这句话说出来很简单,但是要做到则非常难。导致难的其中一个因素是: 你不熟悉这个行业的业务的玩法 我举个例子来...

Sam哥哥聊技术
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部