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相关推荐

  1. 未在本地计算机上注册oraoledb.oracle.1提供程序,未在本地计算机上注册“OraOLEDB.Oracle.1”提供程序--问题的处理...

    最近Up主接手了C#连接Oracle的项目,遇到了各种问题,最严重的莫过于用连接字符串连接不上Oracle了. 抛出如下问题System.InvalidOperationException: 未在本地 ...

  2. Python 技术篇-连接oracle数据库并执行sql语句实例演示,python连接oracle数据库oci详细配置方法

    Python 连接 Oracle 数据库 第一章:连接 oracle 数据与环境配置 ① 连接 oracle 数据库效果演示 ② oci 下载 ③ oci 配置 ④ 环境变量配置 ⑤ 检测是否有 or ...

  3. oracle column的设置,SQL*PLUS的命令行——column命令 - [ORACLE]

    未修改前的默认设置输出:SQL> select a.FILE_NAME,a.TABLESPACE_NAME,b.CURRENT_SCN from DBA_DATA_FILES a ,v$data ...

  4. 使用Microsoft数据迁移助手将Oracle数据库迁移到SQL Server –安装过程和简短概述

    目标听众 (Intended audience) This document is intended for application developers and database administr ...

  5. mysql库与oracle库的区别_开源数据库Oracle与MySQL的SQL语法区别

    Oracle数据库与MySQL数据库的区别是本文我们主要要介绍的内容,接下来我们就开始介绍这部分内容,希望能够对您有所帮助. Oracle与MySQL的SQL语法区别: 1.在Oracle中用sele ...

  6. oracle 查看表被谁删了_【分享】Oracle 常用运维命令大全

    一.oracle建库与删库命令 (1)oracle11g建库(一般习惯配置gdbname与sid名一样,sys密码与system密码一样,以方便记忆) [oracledb@ ~]$ dbca -sil ...

  7. oracle发票验证,通过使用Oracle SQL脚本进行计算(总发票)的多个表的更新记录...

    我有一个SERVICE表,该表存储一个表中的服务数量,然后链接到连接到INVOICE的LINE表.通过使用Oracle SQL脚本进行计算(总发票)的多个表的更新记录 我想要创建一个触发器,根据SER ...

  8. oracle层级计算推演,(特价书)Oracle 高性能SQL引擎剖析:SQL优化与调优机制详解(资深Oracle专家黄玮十年磨一剑,盖国强作序力荐)(china-pub首发)...

    第一篇 执 行 计 划 执行计划是指示Oracle如何获取和过滤数据.产生最终结果集,是影响SQL语句执行性能的关键因素.我们在深入了解执行计划之前,首先需要知道执行计划是在什么时候产生的,以及如何让 ...

  9. mysql和oracle面试题_【SQL 面试题2】Mysql 和Oracle数据库

    1.如果匹配上,将DictB的Desc更新成DictA中对应的字段Desc 首先创建两张表格: CREATE TABLE DictA(id1 number, desc1 varchar2(10)); ...

最新文章

  1. 利用OpenCV实现基于深度学习的超分辨率处理
  2. 怎样用Beyond Compare比较两个txt文件
  3. python 获取内存使用率_获取一个python实例的总内存和cpu使用率
  4. 小米硬盘路由器服务器,随手分享攻略 篇九:小米路由器更换10T硬盘 —— 小白教程...
  5. 转胡一虎Blog:父亲是我生命中的永恒
  6. full outer join应用场景
  7. linux的yum命令无法使用在哪里下载_一行命令下载全网视频,这个命令太牛逼了!...
  8. pycharm4.5.1 注册码 破解
  9. [图文]symbian与uiq开发教程(转)
  10. FM25V05-GTR 存储器 CYPRESS
  11. 百度音乐API抓取-Fiddler
  12. 报时功能_卡地亚时隔五年再推出含有三问、万年历和陀飞轮的大复杂功能手表...
  13. mac程序坞 全屏时偶尔无法自动隐藏的bug
  14. Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) -29
  15. Python抓狐狸游戏
  16. 多边形建模和雕刻建模、C4D和Zbrush
  17. simulink rtw
  18. 模式识别作业,基于python提取图像纹理特征
  19. oracle看起来很简单一用就不会的同列乘积函数
  20. 面试复盘:2020-05-30

热门文章

  1. 总结一幅TCP/QUIC拥塞控制(CC)算法的图示
  2. 【c++实现单机/多人联机 TankTrouble(坦克动荡) (一) —— 单机模式
  3. KindEditor实例【带图秒懂!!!】
  4. 【统计学01】概括性描述-集中趋势,离散程度,分布形状度量
  5. Android多媒体:H264格式文件转MP4格式文件
  6. Fedora安装Hadoop
  7. Proxifier设置方法
  8. java tinyint_java – 将一个tinyint映射为boolean hibernate
  9. 【论文笔记】SEEK: Segmented Embedding of Knowledge Graphs
  10. layUI 之 layui.upload before 阻断上传