Oracle分析函数之Rank函数
本文主要讲述Oracle分析函数之Rank函数的用法
最近接触到Oracle这个功能强大而灵活的函数。这个函数特别适用于各种统计查询,下面就来说一说。
首先存在 product 表
SELECT p.create_time, p.name, p.service_evaluate_fee, p.product_type FROM product p
表数据如下:
ROW_NUMBER()
SELECT
row_number() OVER(PARTITION BY p.product_type ORDER BY p.update_time DESC)
row_number, p.create_time, p.name, p.product_type
FROM product p
执行结果如下:
SQL执行意思为根据产品类型来分类的同时,根据创建时间create_time来排序
SELECT * FROM
(
SELECT row_number()
OVER(PARTITION BY p.product_type ORDER BY p.update_time DESC) row_number,
p.create_time, p.name, p.product_type
FROM product p
) pp
WHERE pp.row_number <= 10 AND pp.row_number >5
row_number()还可以用来做分页数据,查询结果如下:
RANK()
SELECT
rank() OVER(ORDER BY p.service_evaluate_fee DESC) rank,
p.service_evaluate_fee, p.create_time, p.name, p.product_type
FROM product p
此处不再区分不同产品,只考虑服务评估费,service_evaluate_fee
执行结果如下:
DENSE_RANK()
SELECT
dense_rank() OVER(ORDER BY p.service_evaluate_fee DESC) rank,
p.service_evaluate_fee, p.create_time, p.name, p.product_type
FROM product p
执行结果如下:
通过上述结果的比较,我们可以发现ROW_NUMBER(), RANK(), DENSE_RANK()的区别:
当结果集中如果出现两条相同的数据,那么rank会进行跳跃式的排名,
比如2个第一,那么没有第二,接下来就是第三;
dense_rank不会跳跃式的排名,两个第一接下来还是第二;
row_number,即使两条数据相同,每一条数据排名均不相同,因此适用于分页查询(页码必须是连续不跳跃的)。
SELECT
row_number() OVER(ORDER BY p.service_evaluate_fee DESC) row_num,
rank() OVER(ORDER BY p.service_evaluate_fee DESC) rank,
dense_rank() OVER(ORDER BY p.service_evaluate_fee DESC) dense_rank,
p.service_evaluate_fee, p.create_time, p.name, p.product_type
FROM product p
执行结果如下:
总结
语法 FUNCTION_NAME(参数,…) OVER(PARTITION BY 表达式,… ORDER BY 表达式 ASC DESC)
Oracle分析函数之Rank函数相关推荐
- oracle 分析函数、GROUPING函数
分析函数 over(Partition by...) 一个超级牛皮的ORACLE特有函数.天天都用ORACLE,用了快2年了.最近才接触到这个功能强大而灵活的函数.真实惭愧啊!oracle的分析函数o ...
- oracle常用分析函数与聚合函数的用法
今天是2019年第一天,在此祝大家新年快乐,梦想还在路上,让我们继续加油! 应之前的计划,今天完成这篇记录,也借此记录自己的成长. 一.几个排名函数的语法和用法: rank ( ) over ([p ...
- oracle sql时间排序函数,sql的rank函数
SQL SERVER 2008排序函数(窗口函数) 排序函数可以用来协助给结果集增加位置信息.SQL SERVER 2008只有四个排序函数,介绍如下: ROW_NUMBER:返回结果集中给定行的序号 ...
- Oracle 分析函数 over 和MySQL 实现类似效果写法
(1)分析函数: rank ( ) over ( [query_partition_clause]order_by_clause ) dense_rank ( ) over([query_partit ...
- oracle怎么声明nvl函数,[转载]Oracle中的NVL函数
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...
- rank()函数 mysql_在MySQL中实现Rank高级排名函数
在MySQL中实现Rank高级排名函数 MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可 ...
- oracle 四分位函数,Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
Oracle 分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据 ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内 ...
- Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
Oracle分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内的数据 ...
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
- [转]oracle分析函数Rank, Dense_rank, row_number
oracle分析函数Rank, Dense_rank, row_number 分析函数2(Rank, Dense_rank, row_number) 目录 ==================== ...
最新文章
- R语言编写自定义函数、评估回归模型预测变量的相对重要性(Relative importance)、通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加、评估预测变量的重要度、并通过点图可视化
- a标签用ajax请求传参,Django中如何实现传参的Ajax请求
- 值重新赋值_JavaScript-赋值运算符
- Laravel Passport里的授权类型介绍
- QC使用流程(1)之安装篇
- mysql 重启_解决MYSQL死机,定时重启MYSQL,wdcp计划任务设定方法,
- 2020年电商上市公司市值梯队
- 第三方组件曝多个严重漏洞,飞利浦 Vue PACS 医学成像系统受影响
- 21天实战人工智能系列:人工智能产品经理最佳实践(3)
- 编写if语句时then子句为空语句_Python入门 5——循环语句及条件判断
- Linux的tar解压命令
- 设计师工资低?10大网站助你快速涨1万身价
- 1060显卡支持dx12吗_真香!1060显卡支持光线追踪技术
- 模模搭升级,场景自动同步ThingJS平台,搭建开发无缝衔接!
- 微信公众号html怎么做的,微信公众平台页面模板怎么用?分类目录页面是如何制作的?...
- [深度学习论文笔记][Adversarial Examples] Deep Neural Networks are Easily Fooled: High Confidence Predictions
- 生命是一种长期而持续的累积过程
- 潘多拉固件设置ipv6_openwrt-LEDE系统IPV6设置教程
- Convolutional Neural Networks for Sentence Classification用于句子分类的卷积神经网络
- 【金融财经】金融市场一周简报(2017-11-03)