Oracle分析函数/排名函数/位移函数/同比环比
分析函数
作用:分析函数可以在数据中进行分组,然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值。
统计函数:MAX(字段名)、MIN(字段名)、AVG(字段名)、SUM(字段名)、COUNT(字段名)。
--语法结构:
--函数名(参数) OVER ([PARTITION BY 字段名] [ORDER BY 字段名]) --分析函数与分组聚合(统计)函数的不同之处:
-->普通的聚合函数分组是采用 GROUP BY;而分析函数分组是采用 PARTITION BY;
-->分组聚合后的每个分组返回一个统计值;分析函数分组后的每组每行都可以返回一个统计值。
SELECT E.*,
COUNT(E.DEPTNO) OVER(PARTITION BY E.DEPTNO ORDER BY E.DEPTNO) CNT,
MAX(E.SAL) OVER(PARTITION BY E.DEPTNO ORDER BY E.DEPTNO) MAX_SAL
FROM EMP E; SELECT E.DEPTNO,COUNT(E.DEPTNO)
FROM EMP E
GROUP BY E.DEPTNO; --通过职位分组,按照薪资由高到低排序,显示每个员工信息以及对应的最高薪资是多少
SELECT E.*,
MAX(E.SAL) OVER(PARTITION BY E.JOB ORDER BY E.SAL DESC)MSAL
FROM EMP E;
排名函数
ROW_NUMBER()/RANK()/DENSE_RANK()
三者的唯一区别在于碰到相同数据时的排名策略:
ROW_NUMBER():
返回一个唯一的值,当碰到相同数据时,排名按照记录集合中的记录顺序由1依次递增;例如:1,2,3,4,5,6,7...
RANK():
返回一个唯一的值,当碰到相同数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。例如:1,2,3,3,3,6,7...
DENSE_RANK():
返回一个唯一的值,当遇到相同数据时,此时所有相同数据的排名是一样的。例如:1,2,3,3,3,4,5,6,7...
SELECT E.*,
ROW_NUMBER() OVER(ORDER BY E.SAL) RN,
RANK() OVER(ORDER BY E.SAL) RANK,
DENSE_RANK() OVER(ORDER BY E.SAL) D_RANK
FROM EMP E;
位移函数
--上移函数:LEAD(字段名,上移的行数[,空行的默认值])
SELECT E.EMPNO,
E.SAL,
LEAD(E.SAL,1) OVER(ORDER BY E.SAL) LEAD_SAL,
LEAD(E.SAL,2,8888) OVER(ORDER BY E.SAL) LEAD_SAL_1
FROM EMP E; SELECT E.EMPNO,
E.ENAME,
E.JOB,
E.SAL,
LEAD(E.SAL) OVER(PARTITION BY E.JOB ORDER BY E.SAL) LEAD1
FROM EMP E; --下移函数:LAG(字段名,下移的行数[,空行的默认值])
SELECT E.EMPNO,
E.SAL,
LAG(E.SAL,1) OVER(ORDER BY E.SAL) LAG_SAL,
LAG(E.SAL,2,8888) OVER(ORDER BY E.SAL) LAG_SAL_1
FROM EMP E;
同比与环比
同比:指的是相邻的年份,相同的月份或者季度来进行涨幅的比较
同比 = (现阶段 - 上阶段)/ 上阶段;
今年第三季度的销售额为 1000万元,去年第三季度的销售额为 500万元,计算同比
(1000 - 500) / 500 = 1;
环比:指的是相同的年份,连续(相邻)的月份或者季度来进行涨幅的比较
环比 = (现阶段 - 上阶段)/ 上阶段;
今年第三季度的销售额为 1000万元,今年第二季度的销售额为 500万元,计算环比
(1000 - 500) / 500 = 1;
Oracle分析函数/排名函数/位移函数/同比环比的更多相关文章
- Oracle分析函数及常用函数: over(),rank()over()作用及用法--分区(分组)求和& 不连续/连续排名
(1) 函数: over()的作用及用法: -- 分区(分组)求和. sum() over( partition by column1 order by column2 )主要用来对某个字 ...
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
- oracle分析函数技术详解(配上开窗函数over())
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- oracle的分析函数over 及开窗函数
转:http://www.2cto.com/database/201310/249722.html oracle的分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开 ...
- oracle 分析函数和开窗函数
最近遇到一个需求,将查询出的数据按照地区分组,随机取出每个区域的2条数据,这里用到了oracle的分析和开窗函数: 最终写出的sql如下: select * from (select region,r ...
- Oracle 分析函数及常用函数
什么叫分析函数(Analytic function)? Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组 ...
- 关于oracle数据库(10)函数
分析函数,用于统计排名 语法:函数名() over(order by 排序字段 asc | desc) row_number() 无论值是否相等,生成连续的行号 -- 1,2,3,4, select ...
- .Net程序员学用Oracle系列(10):系统函数(下)
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.转换函数 1.1.TO_CHAR 1.2.TO_NUMBER 1.3.TO_DATE 1.4.CAST 2.近似值函数 2. ...
- oracle中110个常用函数介绍
1. ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dua ...
随机推荐
- Rsync安装配置
一.先准备两台CentOS服务器,假定是 1.172.18.2.225(服务端) 需要配置rsyncd.conf文件 2.172.18.2.227(客户端) 不需要配置rsyncd.conf文件 二. ...
- xargs、管道、exec区别
作者:ilexwg链接:https://www.zhihu.com/question/27452459/answer/170834758来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- ApacheCN Java 译文集 20210921 更新
新增了五个教程: Java 设计模式最佳实践 零.前言 一.从面向对象到函数式编程 二.创建型模式 三.行为模式 四.结构模式 五.函数式模式 六.让我们开始反应式吧 七.反应式设计模式 八.应用架构 ...
- Ubuntu16.04的PHP开发环境配置
\3c a { text-decoration: none } 自从换了php开发之后发现还是开源语言才是长久之道,开发环境搭建方便,支持的平台也多,性能也好,考虑到这些,其他一些不如意也就不足为虑了 ...
- vi/vim 设置.vimrc(/etc/vim | $HOME)
转载请注明来源:https://www.cnblogs.com/hookjc/ "====================================================== ...
- K8是—— yaml资源清单
K8是-- yaml资源清单 一.yaml文件详解 1.Kubernetes支持YAML和JSON格式管理资源对象2.JSON格式:主要用于api接口之间消息的传递3.YAML格式:用于配置和管理,Y ...
- 用Java实现生成图片验证码
通过代码实现生成一个随机验证码图片,且生成后自动打开: package day_12_17; import javax.imageio.ImageIO; import java.awt.*; impo ...
- 总结Tomcat优化方法
一.内存空间优化 配置文件目录:/usr/local/tomcat/bin/catalina.sh JAVA_OPTS="-server -Xms4g -Xmx4g -XX:NewSize= ...
- Aselenium前言
https://seleniumhq.github.io/docs/index.html https://www.seleniumhq.org/ THE SELENIUM BROWSER AUTOMA ...
- Solution -「LOJ #150」挑战多项式 ||「模板」多项式全家桶
\(\mathcal{Description}\) Link. 给定 \(n\) 次多项式 \(F(x)\),在模 \(998244353\) 意义下求 \[G(x)\equiv\left\{ ...