本文主要讲述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函数相关推荐

  1. oracle 分析函数、GROUPING函数

    分析函数 over(Partition by...) 一个超级牛皮的ORACLE特有函数.天天都用ORACLE,用了快2年了.最近才接触到这个功能强大而灵活的函数.真实惭愧啊!oracle的分析函数o ...

  2. oracle常用分析函数与聚合函数的用法

    今天是2019年第一天,在此祝大家新年快乐,梦想还在路上,让我们继续加油! 应之前的计划,今天完成这篇记录,也借此记录自己的成长. 一.几个排名函数的语法和用法: rank ( )  over ([p ...

  3. oracle sql时间排序函数,sql的rank函数

    SQL SERVER 2008排序函数(窗口函数) 排序函数可以用来协助给结果集增加位置信息.SQL SERVER 2008只有四个排序函数,介绍如下: ROW_NUMBER:返回结果集中给定行的序号 ...

  4. Oracle 分析函数 over 和MySQL 实现类似效果写法

    (1)分析函数: rank ( ) over ( [query_partition_clause]order_by_clause ) dense_rank ( ) over([query_partit ...

  5. oracle怎么声明nvl函数,[转载]Oracle中的NVL函数

    Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...

  6. rank()函数 mysql_在MySQL中实现Rank高级排名函数

    在MySQL中实现Rank高级排名函数 MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可 ...

  7. oracle 四分位函数,Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…

    Oracle 分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据 ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内 ...

  8. Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…

    Oracle分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内的数据 ...

  9. Oracle分析函数——函数列表

    --------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...

  10. [转]oracle分析函数Rank, Dense_rank, row_number

    oracle分析函数Rank, Dense_rank, row_number 分析函数2(Rank, Dense_rank, row_number)   目录 ==================== ...

最新文章

  1. R语言编写自定义函数、评估回归模型预测变量的相对重要性(Relative importance)、通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加、评估预测变量的重要度、并通过点图可视化
  2. a标签用ajax请求传参,Django中如何实现传参的Ajax请求
  3. 值重新赋值_JavaScript-赋值运算符
  4. Laravel Passport里的授权类型介绍
  5. QC使用流程(1)之安装篇
  6. mysql 重启_解决MYSQL死机,定时重启MYSQL,wdcp计划任务设定方法,
  7. 2020年电商上市公司市值梯队
  8. 第三方组件曝多个严重漏洞,飞利浦 Vue PACS 医学成像系统受影响
  9. 21天实战人工智能系列:人工智能产品经理最佳实践(3)
  10. 编写if语句时then子句为空语句_Python入门 5——循环语句及条件判断
  11. Linux的tar解压命令
  12. 设计师工资低?10大网站助你快速涨1万身价
  13. 1060显卡支持dx12吗_真香!1060显卡支持光线追踪技术
  14. 模模搭升级,场景自动同步ThingJS平台,搭建开发无缝衔接!
  15. 微信公众号html怎么做的,微信公众平台页面模板怎么用?分类目录页面是如何制作的?...
  16. [深度学习论文笔记][Adversarial Examples] Deep Neural Networks are Easily Fooled: High Confidence Predictions
  17. 生命是一种长期而持续的累积过程
  18. 潘多拉固件设置ipv6_openwrt-LEDE系统IPV6设置教程
  19. Convolutional Neural Networks for Sentence Classification用于句子分类的卷积神经网络
  20. 【金融财经】金融市场一周简报(2017-11-03)

热门文章

  1. 2019最新私塾在线高级java软件架构师培训项目实战(完整)
  2. 中国地图和地方特点介绍
  3. 2022电工杯数学建模A题目思路总结分享
  4. 安装Zorin os
  5. 预付费电能表远传抄表系统
  6. 【SQL Server】入门教程(总结篇)
  7. 傅里叶变换,拉普拉斯变换和小波变换
  8. Java毕业设计-医院药品管理系统
  9. 超能竞速大开眼界,iQOO 5系列正式发布
  10. 卡BIN指的是发卡行识别码