Oracle中rank函数详解
【格式】
格式一:RANK() OVER ( [partition by 分区字段] order by 排序字段 asc/desc)
格式二:DENSE_RANK() OVER ( [partition by 分区字段] order by 排序字段 asc/desc)
【说明】
- rank():表示排序结果不连续;
- dense_rank():表示排序结果连续;
- partition by:表示分区统计,该项为可选项;
- order by:表示按指定字段进行排序。
【创建样例数据】
先创建数据表,建表语句如下:
-- Create table
create table T_PRODUT_SALES
(
product VARCHAR2(20) not null,
area VARCHAR2(20) not null,
sale NUMBER not null
)
tablespace TEST_SPACE
pctfree 10
initrans 1
maxtrans 255;
-- Add comments to the table
comment on table T_PRODUT_SALES
is '产品销量表-演示用';
-- Add comments to the columns
comment on column T_PRODUT_SALES.product
is '产品名称';
comment on column T_PRODUT_SALES.area
is '地区';
comment on column T_PRODUT_SALES.sale
is '销量';
再往表中插入数据,SQL语句如下:
insert into T_PRODUT_SALES (product, area, sale)
values ('产品1', '地区1', 50);
insert into T_PRODUT_SALES (product, area, sale)
values ('产品1', '地区2', 60);
insert into T_PRODUT_SALES (product, area, sale)
values ('产品1', '地区3', 70);
insert into T_PRODUT_SALES (product, area, sale)
values ('产品2', '地区1', 50);
insert into T_PRODUT_SALES (product, area, sale)
values ('产品2', '地区2', 65);
insert into T_PRODUT_SALES (product, area, sale)
values ('产品2', '地区3', 75);
insert into T_PRODUT_SALES (product, area, sale)
values ('产品3', '地区1', 40);
insert into T_PRODUT_SALES (product, area, sale)
values ('产品3', '地区2', 60);
insert into T_PRODUT_SALES (product, area, sale)
values ('产品3', '地区3', 85);
最后查询表中数据,返回结果如下:
【样例展示1】
sql语句如下:
select product,area,sale,rank() over(order by sale desc) as 排名 from T_PRODUT_SALES
返回结果如下图:按销量进行不连续排名。
【样例展示2】
sql语句如下:
select product,area,sale,dense_rank() over(order by sale desc) as 排名 from T_PRODUT_SALES
返回结果如下图:按销量进行连续排名。
【样例展示3】
sql语句如下:
select product,area,sale,rank() over(partition by area order by sale desc) as 排名 from T_PRODUT_SALES
返回结果如下图:按地区分区进行不连续排名。
【样例展示4】
sql语句如下:
select product,area,sale,dense_rank() over(partition by area order by sale desc) as 排名 from T_PRODUT_SALES
返回结果如下图:按地区分区进行连续排名。
Oracle中rank函数详解相关推荐
- oracle中to_date函数详解
to_date()与24小时制表示法及mm分钟的显示: 一.在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用"yyyy-MM-dd HH:mm:ss& ...
- oracle中sign函数详解
在Oracle/PLSQL中, sign 函数返回一个数字的正负标志. 语法如下:sign( number ) number 要测试标志的数字. If number < 0, then sign ...
- Oracle中pivot函数详解
[基本介绍] [格式]:pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值)) [说明]:实现将指定字段的字段值转换为列的效果. [环境]:如下图是样例展示所使用的oracle ...
- Oracle中decode函数详解
[函数格式]: decode ( expression, condition_01, result_01, condition_02, ...
- Oracle中rollup函数详解
[基本介绍] [格式]:group by rollup(字段1,字段2,字段3,...,字段n) [说明]:rollup主要用于分组汇总,如果rollup中有n个字段,则会分别按[字段1].[字段1, ...
- Matlab中 pdist 函数详解
学习笔记,仅供参考,有错必纠 转载自:Matlab中 pdist 函数详解(各种距离的生成); pdist Pairwise distance between pairs of objects. Sy ...
- c++ memset 语言_C/C++ 中memset() 函数详解及其作用介绍
memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的: 包含在头文件中,可以用它对一片内存空间逐字节进行初始化: 原型为 : void *memset(void *s, int v, si ...
- matlab中xcorr函数详解
Matlab中xcorr函数详解 引言 在matlab中查找相关函数时,找到了xcov函数和xcorr函数,仔细看了帮助文档,发现虽然计算公式不一样,但是两个函数用法相同,计算出的值也相同,于是在翻了 ...
- oracle中的用户详解 【转】
oracle中的用户详解 [转] - feiyun8616 - 博客园 (cnblogs.com)https://www.cnblogs.com/feiyun8616/p/6497690.htmlor ...
- Linux中fork()函数详解
Linux中fork()函数详解 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事, ...
最新文章
- LSTM 为何如此有效?这五个秘密是你要知道的
- 项目管理利器taiga快速安装
- idea中实体类右击没有ptg_几个牛逼的IDEA插件,Java开发者撸码神器,还带动图的!...
- window 修改字符集为utf8
- matlab条形图添加误差线_在Excel图表中添加误差线和对误差线进行设置的技巧
- service层的方法上使用@Transactional注解,程序发生异常没有回滚
- 就是要让你搞懂 Nginx,这篇就够了!
- 使用 Python ElementTree 生成 xml
- C++之指针探究(四):指针和二维数组
- php 同步退出,Ucenter 的同步登录与同步退出
- VS2010应用程序工程中文件的组成结构
- Linux下如何实现对某个文件夹进行压缩
- Deep3DFaceReconstruction让一张人脸照片变成三维的真人脸
- 录入姓名完成座位表,学习前端的小伙伴可以关注一波,用js+html+css构成
- 二叉查找树,二叉平衡树
- php 完成时钟,PHP 绘制时钟 高洛峰 细说PHP
- 如何做好软件系统的架构设计?
- JavaScript实现购物车计算价格功能
- 为什么不能每周发布一次?
- mysql中高阶玩法系列(六)