oracle计算数据环比sql,用分析函数计算环比、同比oracle
1.普及一下概念
环比 = 2018年10月/2018年09月(同一时期内不同时间段的比较)
同比 = 2018年10月/2017年10月(不同时期内相同时间段的比较)
环比增长率 = (2018年10月-2018年09月)/2018年09月
同比增长率 = (2018年10月-2017年10月)/2017年10月
2.关键sql 解释
(1)分析函数
lead(params,m,n) 以params为目标向下m位取数,当取不到时默认为 n,
lag(params,m,n) 以params为目标向上m位取数,当取不到时默认为 n
over(order by...) 相当于 order by...
partition by ... 根据参数最为分割,将相同的先分割到一块
3.具体sql例子
//按月统计发票的总金额、总税额、总票数、月同比、月环比 、同比增长率、环比增长率
select a.sumquantity,
nvl(round(a.sumquantity /lag(a.sumquantity) over( order by a.yearmonth)*100, 2), '0') ||'%' sumquantityHB,
nvl(round((a.sumquantity-a.lagAHB)/lag(a.sumquantity) over( order by a.yearmonth)*100, 2), '0') ||'%' sumquantityHBG,//计算环比(按月) 关键代码lag()over(partition by 月份/年份 order by 排序条件)
nvl(round(a.sumquantity/lag(a.sumquantity) over(partition by to_char((to_date(a.yearmonth, 'yyyy/MM')), 'MM') order by a.yearmonth)*100, 2), '0')||'%' sumquantityTB,
nvl(round((a.sumquantity-a.lagATB)/lag(a.sumquantity) over(partition by to_char((to_date(a.yearmonth, 'yyyy/MM')), 'MM') order by a.yearmonth)*100, 2), '0') ||'%' sumquantityTBG,
a.totalamount,
nvl(round(a.totalamount/lag(a.totalamount) over( order by a.yearmonth)*100, 2), '0')||'%' totalamountHB,
nvl(round((a.totalamount-a.lagBHB)/lag(a.totalamount) over( order by a.yearmonth)*100, 2), '0') || '%' totalamountHBG,
nvl(round(a.totalamount/lag(a.totalamount) over(partition by to_char((to_date(a.yearmonth, 'yyyy/MM')), 'MM') order by a.yearmonth)*100, 2), '0')||'%' totalamountTB,
nvl(round((a.totalamount-a.lagBTB)/lag(a.totalamount) over(partition by to_char((to_date(a.yearmonth, 'yyyy/MM')), 'MM') order by a.yearmonth)*100, 2), '0')||'%' totalamountTB,
a.taxamount ,
nvl(round(a.taxamount/lag(a.taxamount) over( order by a.yearmonth)*100, 2), '0')||'%' taxamountHB,
nvl(round((a.taxamount-a.lagCHB)/lag(a.taxamount) over( order by a.yearmonth)*100, 2), '0')||'%' taxamountHBG,
nvl(round(a.taxamount/lag(a.taxamount) over(partition by to_char((to_date(a.yearmonth, 'yyyy/MM')), 'MM') order by a.yearmonth)*100, 2), '0')||'%' taxamountTB,
nvl(round((a.taxamount-a.lagCTB)/lag(a.taxamount) over(partition by to_char((to_date(a.yearmonth,'yyyy/MM')),'MM') order bya.yearmonth)*100,2),'0')||'%' taxamountTBG
from
( select yearMonth, sumQuantity, lag(sumQuantity) over( order by yearmonth) lagAHB ,
lag(sumQuantity) over(partition by to_char((to_date( yearmonth, 'yyyy/MM')), 'MM') order by yearmonth) lagATB,
totalAmount, lag(totalAmount) over(order by yearmonth) lagBHB,
lag(totalAmount) over(partition by to_char((to_date( yearmonth, 'yyyy/MM')), 'MM') order by yearmonth) lagBTB,
taxAmount , lag(taxAmount) over(partition by to_char((to_date( yearmonth, 'yyyy/MM')), 'MM') order by yearmonth) lagCTB,
lag(taxAmount) over( order by yearmonth) lagCHB //计算环比(按月) 关键代码lag()over(partition by 月份/年份 order by 排序条件)
from
(select to_char(billing_date, 'yyyy/MM') yearMonth, count(1) sumQuantity , nvl(sum(total_amount) , 0.00) totalAmount, nvl(sum(total_tax) , 0.00) taxAmount
from input_original_account
where 1=1 group by to_char(billing_date, 'yyyy/MM'))//先按月份对要统计的数据进项分组
) a
where 1=1 and a.yearMonth='2018/09'
oracle计算数据环比sql,用分析函数计算环比、同比oracle相关推荐
- 未在本地计算机上注册oraoledb.oracle.1提供程序,未在本地计算机上注册“OraOLEDB.Oracle.1”提供程序--问题的处理...
最近Up主接手了C#连接Oracle的项目,遇到了各种问题,最严重的莫过于用连接字符串连接不上Oracle了. 抛出如下问题System.InvalidOperationException: 未在本地 ...
- Python 技术篇-连接oracle数据库并执行sql语句实例演示,python连接oracle数据库oci详细配置方法
Python 连接 Oracle 数据库 第一章:连接 oracle 数据与环境配置 ① 连接 oracle 数据库效果演示 ② oci 下载 ③ oci 配置 ④ 环境变量配置 ⑤ 检测是否有 or ...
- oracle column的设置,SQL*PLUS的命令行——column命令 - [ORACLE]
未修改前的默认设置输出:SQL> select a.FILE_NAME,a.TABLESPACE_NAME,b.CURRENT_SCN from DBA_DATA_FILES a ,v$data ...
- 使用Microsoft数据迁移助手将Oracle数据库迁移到SQL Server –安装过程和简短概述
目标听众 (Intended audience) This document is intended for application developers and database administr ...
- mysql库与oracle库的区别_开源数据库Oracle与MySQL的SQL语法区别
Oracle数据库与MySQL数据库的区别是本文我们主要要介绍的内容,接下来我们就开始介绍这部分内容,希望能够对您有所帮助. Oracle与MySQL的SQL语法区别: 1.在Oracle中用sele ...
- oracle 查看表被谁删了_【分享】Oracle 常用运维命令大全
一.oracle建库与删库命令 (1)oracle11g建库(一般习惯配置gdbname与sid名一样,sys密码与system密码一样,以方便记忆) [oracledb@ ~]$ dbca -sil ...
- oracle发票验证,通过使用Oracle SQL脚本进行计算(总发票)的多个表的更新记录...
我有一个SERVICE表,该表存储一个表中的服务数量,然后链接到连接到INVOICE的LINE表.通过使用Oracle SQL脚本进行计算(总发票)的多个表的更新记录 我想要创建一个触发器,根据SER ...
- oracle层级计算推演,(特价书)Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解(资深Oracle专家黄玮十年磨一剑,盖国强作序力荐)(china-pub首发)...
第一篇 执 行 计 划 执行计划是指示Oracle如何获取和过滤数据.产生最终结果集,是影响SQL语句执行性能的关键因素.我们在深入了解执行计划之前,首先需要知道执行计划是在什么时候产生的,以及如何让 ...
- mysql和oracle面试题_【SQL 面试题2】Mysql 和Oracle数据库
1.如果匹配上,将DictB的Desc更新成DictA中对应的字段Desc 首先创建两张表格: CREATE TABLE DictA(id1 number, desc1 varchar2(10)); ...
最新文章
- 利用OpenCV实现基于深度学习的超分辨率处理
- 怎样用Beyond Compare比较两个txt文件
- python 获取内存使用率_获取一个python实例的总内存和cpu使用率
- 小米硬盘路由器服务器,随手分享攻略 篇九:小米路由器更换10T硬盘 —— 小白教程...
- 转胡一虎Blog:父亲是我生命中的永恒
- full outer join应用场景
- linux的yum命令无法使用在哪里下载_一行命令下载全网视频,这个命令太牛逼了!...
- pycharm4.5.1 注册码 破解
- [图文]symbian与uiq开发教程(转)
- FM25V05-GTR 存储器 CYPRESS
- 百度音乐API抓取-Fiddler
- 报时功能_卡地亚时隔五年再推出含有三问、万年历和陀飞轮的大复杂功能手表...
- mac程序坞 全屏时偶尔无法自动隐藏的bug
- Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) -29
- Python抓狐狸游戏
- 多边形建模和雕刻建模、C4D和Zbrush
- simulink rtw
- 模式识别作业,基于python提取图像纹理特征
- oracle看起来很简单一用就不会的同列乘积函数
- 面试复盘:2020-05-30
热门文章
- 总结一幅TCP/QUIC拥塞控制(CC)算法的图示
- 【c++实现单机/多人联机 TankTrouble(坦克动荡) (一) —— 单机模式
- KindEditor实例【带图秒懂!!!】
- 【统计学01】概括性描述-集中趋势,离散程度,分布形状度量
- Android多媒体:H264格式文件转MP4格式文件
- Fedora安装Hadoop
- Proxifier设置方法
- java tinyint_java – 将一个tinyint映射为boolean hibernate
- 【论文笔记】SEEK: Segmented Embedding of Knowledge Graphs
- layUI 之 layui.upload before 阻断上传