- 浏览: 770915 次
- 性别:
- 来自: 广州
文章分类
最新评论
RANK()既是一个聚合函数,也是一个分析函数
其具体的语法如下:
聚合函数语法:
分析函数的语法:
RANK计算的是一个组值中每个值的等级,返回的是整数
作为聚合函数时,例子如下:
SELECT RANK(1250, 30) WITHIN GROUP(ORDER BY sal,deptno) "Rank" FROM emp;
Rank
----------
3
上面SQL表示的意思是:sal 为1250,并且deptno为30的记录,通过sal,deptno排序后所在的位置。
原表的结果如下:
SQL> select * from emp order by sal,deptno;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-DEC-81 950 30
7369 SMITH CLERK 7902 17-DEC-80 1064.8 20
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7876 ADAMS CLERK 7788 23-MAY-87 1464.1 20
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7934 MILLER CLERK 7782 23-JAN-82 1730.3 10
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 3260.95 10
7566 JONES MANAGER 7839 02-APR-81 3959.73 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3993 20
7902 FORD ANALYST 7566 03-DEC-81 3993 20
7839 KING PRESIDENT 17-NOV-81 6655 10
14 rows selected.
作为分析函数使用时,其意思是分析每个记录的排序或等级,rank()值相同时排名相同,其后排名跳跃不连续
SQL> select *
2 from ( select deptno,
3 rank() over(partition by deptno order by sal desc) rw,
4 ename, sal
5 from emp ) where rw <= 4;
DEPTNO RW ENAME SAL
---------- ---------- ---------- ----------
10 1 KING 6655
10 2 CLARK 3260.95
10 3 MILLER 1730.3
20 1 SCOTT 3993
20 1 FORD 3993
20 3 JONES 3959.73
20 4 ADAMS 1464.1
30 1 BLAKE 2850
30 2 ALLEN 1600
30 3 TURNER 1500
30 4 WARD 1250
DEPTNO RW ENAME SAL
---------- ---------- ---------- ----------
30 4 MARTIN 1250
12 rows selected.
注意:作为分析函数时,与DENSE_RANK()和ROW_NUMBER()的区别。
dense_rank()值相同时排名相同,其后排名连续不跳跃
row_number()值相同时排名不相等,其后排名连续不跳跃
其具体的语法如下:
聚合函数语法:
分析函数的语法:
RANK计算的是一个组值中每个值的等级,返回的是整数
作为聚合函数时,例子如下:
SELECT RANK(1250, 30) WITHIN GROUP(ORDER BY sal,deptno) "Rank" FROM emp;
Rank
----------
3
上面SQL表示的意思是:sal 为1250,并且deptno为30的记录,通过sal,deptno排序后所在的位置。
原表的结果如下:
SQL> select * from emp order by sal,deptno;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-DEC-81 950 30
7369 SMITH CLERK 7902 17-DEC-80 1064.8 20
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7876 ADAMS CLERK 7788 23-MAY-87 1464.1 20
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7934 MILLER CLERK 7782 23-JAN-82 1730.3 10
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 3260.95 10
7566 JONES MANAGER 7839 02-APR-81 3959.73 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3993 20
7902 FORD ANALYST 7566 03-DEC-81 3993 20
7839 KING PRESIDENT 17-NOV-81 6655 10
14 rows selected.
作为分析函数使用时,其意思是分析每个记录的排序或等级,rank()值相同时排名相同,其后排名跳跃不连续
SQL> select *
2 from ( select deptno,
3 rank() over(partition by deptno order by sal desc) rw,
4 ename, sal
5 from emp ) where rw <= 4;
DEPTNO RW ENAME SAL
---------- ---------- ---------- ----------
10 1 KING 6655
10 2 CLARK 3260.95
10 3 MILLER 1730.3
20 1 SCOTT 3993
20 1 FORD 3993
20 3 JONES 3959.73
20 4 ADAMS 1464.1
30 1 BLAKE 2850
30 2 ALLEN 1600
30 3 TURNER 1500
30 4 WARD 1250
DEPTNO RW ENAME SAL
---------- ---------- ---------- ----------
30 4 MARTIN 1250
12 rows selected.
注意:作为分析函数时,与DENSE_RANK()和ROW_NUMBER()的区别。
dense_rank()值相同时排名相同,其后排名连续不跳跃
row_number()值相同时排名不相等,其后排名连续不跳跃
发表评论
-
Oracle 10g 的clusterware 32位 下载地址
2013-04-19 23:03 1159Oracle 10g 的clusterware 32位 下载地 ... -
oracle 分析函数
2013-04-09 23:25 1134分析函数是用于计算一组中多行的聚合值,与聚合函数的区别在于聚合 ... -
批量执行 bulk collect与forall用法
2013-04-08 23:49 1335BULK COLLECT 子句会批量检 ... -
pl/sql集合类型
2013-03-26 10:12 1536--集合类型 /* 单行单列的数据,使用标量变量 单行 ... -
oracle 行链接与行迁移
2013-03-16 01:06 1063表里的一行对于一个数据块太大的情况有二种(一行在一个数据块里放 ... -
oracle Health Monitor
2013-01-20 00:02 1573About Health Monitor Beginning ... -
oracle moving window size与 AWR retention period关系
2013-01-19 15:58 8454转自: http://tomszrp.itpub.net/po ... -
Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
2013-01-12 00:20 2830insert提示IGNORE_ROW_ON_DUPKEY_IN ... -
oracle 11g新特性Flashback data archive
2013-01-09 22:52 30381. 什么是flashback data archive F ... -
RMAN List和report 命令
2012-12-25 00:07 2826LIST 命令 使用RMAN LIST 命令显示有关资料档案库 ... -
oracle ASM中ASM_POWER_LIMIT参数
2012-12-24 23:46 6364ASM_POWER_LIMIT 该初始化参数用于指定ASM例程 ... -
oracle I/O 从属进程
2012-12-24 23:24 1369I/O 从属进程 I/O从 ... -
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
2012-12-19 23:43 5590用easy connect连接出现“tns无法解析指定的连接标 ... -
Flashback Database --闪回数据库
2012-12-19 23:38 1332Flashback 技术是以Undo segment中的内容为 ... -
Oracle 11g新特性:Automatic Diagnostic Repository
2012-12-19 22:35 1345Oracle Database 11g的FDI(Fault D ... -
RMAN配置中通道(CHANNEL)相关参数 PARALLELISM 、FILESPERSET的关系
2012-12-19 22:09 2593RMAN配置中通道(CHANNEL)相 ... -
oracle 空间RESUMABLE
2012-12-14 22:05 3005空间RESUMABLE操作 转 Oracle从9i开始 ... -
oracle 创建视图 with check option
2012-12-13 23:14 1463我们来看下面的例子: create or replace vi ... -
flashback transaction闪回事务查询
2012-11-26 22:00 1457闪回事务查询有别于闪回查询的特点有以下3个: (1) ... -
pl/sql连不上oracle数据库
2012-11-21 22:56 3705pl/sql 9.2版本连不上oracle数据库 当系统安装 ...
相关推荐
Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法 Oracle分析函数参考手册 开窗函数(over)详解
2 Oracle开发专题之:分析函数 Rank Dense rank row number 3 Oracle开发专题之:分析函数3 Top Bottom N First Last NTile 4 Oracle开发专题之:窗口函数 5 Oracle开发专题之:报表函数 6 Oracle开发专题之:...
Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法,需要的朋友可以参考下。
Oracle 分析函数详解 1. 自动汇总函数rollup,cube, 2. rank 函数, rank,dense_rank,row_number 3. lag,lead函数 4. sum,avg,的移动增加,移动平均数 5. ratio_to_report报表处理函数 6. first,last取基数的分析函数
分析函数2(Rank, Dense_rank, row_number);分析函数3(Top/Bottom N、First/Last、NTile);窗口函数;报表函数;分析函数总结;26个分析函数;PLSQL开发笔记和小结;分析函数简述 ROW_NUMBER () OVER([partition_clause]...
oracle 分析函数 rank dense_rank cube等
oracle分析函数,窗口函数,报表函数 分析函数(OVER) 分析函数2(Rank, Dense_rank, row_number) 分析函数3(Top/Bottom N、First/Last、NTile)
目录 Oracle开发专题之:分析函数(OVER) Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) Oracle开发专题之:分析函数3(Top/Bottom N、First/Last、NTile) Oracle开发专题之:窗口函数 ...
详解Oracle分析函数,主用于OLAP,以实例讲解分析函数. 如: 排序用Rank, Dense_rank, row_number 1.带空值的排列 2.Top/Bottom N查询 3.First/Last排名查询 4.按层次查询 1.窗口函数简介 2.窗口函数示例-全统计 3....
·4Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST… ·5Oracle分析函数五——统计分析函数 ·6Oracle分析函数六——数据分布函数及报表函数 ·7Oracle分析函数七——分析函数案例 ·8Oracle分析函数八...
1、oracle分析函数 中文: 主要含: rank() 和 dense_rank() first_value()和last_value() row_number() LAG() range开窗函数 2、oracle分析函数 英文: 比较详细
Oracle分析函数——函数列表 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算一个组和数据窗口内表达式的...
本文主要是对Oracle分析函数Rank, Dense_rank, row_number的使用法,通过这些函数,我们可以对数据进行排序和分组,需要的朋友可以参考下。
分析函数应用: 1、 结构:聚合函数()over( partition by 字段1,字段2,字段3 order by 字段 desc/asc range between 数值/date preceding/flowing and 数值/date preceding/flowing) 聚合函数可以是:sum,count,...
Oracle 函数分类 :单行函数 分组函数 分析函数单行函数分为:日期函数 数字函数 字符函数 转换函数 其他函数分组函数分为:max(最大值) min(最小值) sum(求和) avg(平均) count(求个数) 分析函数分为:rank() 具有相同...
分析函数(OVER) ...分析函数2(Rank, Dense_rank, row_number) 分析函数3(Top/Bottom N、First/Last、NTile) 窗口函数 报表函数 分析函数总结 26个分析函数 PLSQL开发笔记和小结 分析函数简述
从论坛搜到的,感觉还不错,整理成了word文档,希望对大家也有用,同时也感谢原作者。 主要讲了以下函数: 1. 自动汇总函数rollup,cube, 2. rank 函数, rank,dense_rank,row_number ...6. first,last取基数的分析函数
包含Oracle常用的高级函数,比如取前N名,每个分组的前N名等。 详细介绍Oracle分析函数(OVER、Rank、Dense_rank、row_number、Top/Bottom N、First/Last、NTile) ,窗口函数,报表函数
今天是2019年第一天,在此祝大家新年快乐,梦想还在路上,让我们继续加油! 应之前的计划,今天完成这篇记录,也借此记录自己...rank() 是排名的函数,该函数组内排序后会进行跳号,分数相同的作为并列。 dense_rank()