分析函数

作用:分析函数可以在数据中进行分组,然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值。
统计函数: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分析函数/排名函数/位移函数/同比环比的更多相关文章

  1. Oracle分析函数及常用函数: over(),rank()over()作用及用法--分区(分组)求和& 不连续/连续排名

    (1)   函数:  over()的作用及用法:    -- 分区(分组)求和. sum() over( partition by column1 order by column2 )主要用来对某个字 ...

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

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

  3. oracle分析函数技术详解(配上开窗函数over())

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  4. oracle的分析函数over 及开窗函数

    转:http://www.2cto.com/database/201310/249722.html oracle的分析函数over 及开窗函数   一:分析函数over   Oracle从8.1.6开 ...

  5. oracle 分析函数和开窗函数

    最近遇到一个需求,将查询出的数据按照地区分组,随机取出每个区域的2条数据,这里用到了oracle的分析和开窗函数: 最终写出的sql如下: select * from (select region,r ...

  6. Oracle 分析函数及常用函数

    什么叫分析函数(Analytic function)? Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组 ...

  7. 关于oracle数据库(10)函数

    分析函数,用于统计排名 语法:函数名() over(order by 排序字段 asc | desc) row_number() 无论值是否相等,生成连续的行号 -- 1,2,3,4, select ...

  8. .Net程序员学用Oracle系列(10):系统函数(下)

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.转换函数 1.1.TO_CHAR 1.2.TO_NUMBER 1.3.TO_DATE 1.4.CAST 2.近似值函数 2. ...

  9. oracle中110个常用函数介绍

    1. ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dua ...

随机推荐

  1. redis常见类型

    1.(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: 1 redis 127.0.0.1:6379> COMMAND KEY_NAME  实例 ...

  2. web服务组件

  3. 初步学习TypeScript

    使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...

  4. coredns 安装

    coredns简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目.CoreDNS是SkyDNS的继任者. Sky ...

  5. Reset the default deployment target in Windows Phone Developer Tools

    楼主在更新Windows Phone 8.1 SDK之后遇到一个很烦人的问题,编译选择调试目标列表没有数据.正常情况下都会有一个模拟器列表和真机的选项.肯定又是Preview的bug,问题产生的原因暂 ...

  6. Kubernetes常见的部署方案(十四)

    一.常见的部署方案 滚动更新 服务不会停止,但是整个pod会有新旧并存的情况. 重新创建 先停止旧的pod,然后再创建新的pod,这个过程服务是会间断的. 蓝绿 (无需停机,风险较小) 部署v1的应用 ...

  7. Java当中“+=”和“=+”的区别

    "+="会自动类型强制转换! 隐含了一个强制类型转换! 一 string a1 = "9"; int a2 = 10; a1+=a2; a1=a1+a2; 不会 ...

  8. Ubuntu更换镜像源

    不同的源 当修改sources.list文件时,我们需要将下面任意一个镜像源的代码复制粘贴到该文件中. 阿里源 # 阿里镜像源 deb http://mirrors.aliyun.com/ubuntu ...

  9. AT2657 [ARC078D] Mole and Abandoned Mine

    简要题解如下: 记 \(1\) 到 \(n\) 的路径为关键路径. 注意到关键路径只有一条是解题的关键,可以思考这张图长什么样子. 不难发现关键路径上所有边均为桥,因此大致上是关键路径上每个点下面挂了 ...

  10. SqlServer数据库表生成C# Model实体类SQL语句——补充

    在sql语句最前边加上  use[数据库名] 原链接:https://www.cnblogs.com/jhli/p/11552105.html   --[SQL骚操作]SqlServer数据库表生成C ...