文档章节

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

源-代码
 源-代码
发布于 2016/06/24 19:43
字数 405
阅读 45
收藏 2
点赞 0
评论 0
这三个函数都是排序函数,那么有什么不同呢,下面看个例子:
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
【sql】— SQL Server 中的排名函数

小编在项目中经常用到Row_Number()函数,它是sql server 2012 出现的四大排名函数(排名函数为分区中的每一行返回一个排名值)之一,下面为大家介绍一下它的用法。 使用到的表原始数据 (SELEC...

zt15732625878
04/05
0
0
SQL优化--使用分析函数

前段时间在 http://www.itput.net/ 看到 一篇文章, http://www.itpub.net/thread-1031306-1-4.html 提到一个SQL语句: 建立环境: create table t_emp(id numeric(10) ,name varchar(10), s......

梅_95
2016/09/13
3
0
MySQL over函数的用法

over不能单独使用,要和分析函数:rank(),denserank(),rownumber()等一起使用。 其参数:over(partition by columnname1 order by columnname2) 含义:按columname1指定的字段进行分组排序...

ChinaUnicom110
2017/08/30
0
0
db2 ROW_NUMBER() 用法

其它资料:http://jingyan.baidu.com/article/9989c74604a644f648ecfef3.html 这个也不错 --------------------------------------------------------------------------------------------......

itwriter
2014/06/30
0
0
SQL Server2005排名函数

SELECT * FROM (SELECT bh,title,time,row_number() OVER(ORDER BY bh) AS row FROM shang_cms_news WHERE smallclass=6 ) C WHERE (row between 5 and 7 ) 1. row_number 2. rank 3. dense_......

cyper
2014/05/08
0
1
Oracle分析函数——【转】

原文地址:http://love-flying-snow.iteye.com/blog/573083 以下是原文: 本文讲述Oracle分析函数用法,首先建表: Sql代码: create table earnings -- 打工赚钱表 ( earnmonth varchar2(6...

关河
2016/01/25
28
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
23分钟前
7
3
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
11
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部