当前位置:网站首页>【Oracle SQL】计算同比与环比(列转行进行偏移)
【Oracle SQL】计算同比与环比(列转行进行偏移)
2022-07-26 05:53:00 【江中洲】
关于oracle计算同比环比参考博客
--仅仅查询出来了月度和年度变化数据还需要进行计算
SELECT
t2.D_DATE,
t2.D_TASKS,
LAG ( D_TASKS, 1, 0 ) OVER ( ORDER BY t2.D_DATE ) AS monthOnMonth,
LAG ( t2.D_TASKS, 12, 0 ) OVER ( ORDER BY t2.D_DATE ) AS yearOnYear
FROM
(
SELECT
t0.D_DATE,
t1.D_TASKS
FROM
( SELECT TO_CHAR( add_months( SYSDATE,- ROWNUM ), 'yyyy-MM' ) D_DATE FROM dual CONNECT BY 13 >= ROWNUM ) t0
LEFT JOIN ( SELECT SUM( D_TASKS ) D_TASKS, D_DATE FROM ZZ_SYSTEM_DATA WHERE STYPE_NAME = '千人负伤率‰(当期年累计)' GROUP BY D_DATE ORDER BY D_DATE ) t1 ON t0.D_DATE = t1.D_DATE
ORDER BY
t0.D_DATE
) t2
还要考虑是不是为0或者为空,为0为null 做除法更麻烦了
SELECT
t3.YEARMONTH,
t3.DATA,
CASE
WHEN t3.DATA IS NULL THEN
'0.00%' ELSE TO_CHAR(
NVL(
ROUND(
DECODE( t3.LASTMONTH, 0, 100, ( t3.DATA - t3.LASTMONTH ) / t3.LASTMONTH * 100 ),
2
),
0
),
'fm9999999990.00'
) || '%'
END AS month_on_year,
CASE
WHEN t3.DATA IS NULL THEN
'0.00%' ELSE TO_CHAR(
NVL(
ROUND(
DECODE( t3.SameMonth, 0, 100, ( t3.DATA - t3.SameMonth ) / t3.SameMonth * 100 ),
2
),
0
),
'fm9999999990.00'
) || '%'
END AS year_on_year
FROM
(
SELECT
t2.D_DATE AS YearMonth,
t2.D_TASKS AS DATA,
LAG ( D_TASKS, 1, 0 ) OVER ( ORDER BY t2.D_DATE ) AS LastMonth,
LAG ( t2.D_TASKS, 12, 0 ) OVER ( ORDER BY t2.D_DATE ) AS SameMonth
FROM
(
SELECT
t0.D_DATE,
t1.D_TASKS
FROM
(
SELECT
TO_CHAR( add_months( add_months( SYSDATE,- ( 0- ( 12-to_char ( SYSDATE, 'mm' ) ) ) ),- ROWNUM + 1 ), 'yyyy-MM' ) D_DATE
FROM
dual CONNECT BY 24 >= ROWNUM
) t0
LEFT JOIN ( SELECT SUM( D_TASKS ) D_TASKS, D_DATE FROM ZZ_SYSTEM_DATA WHERE STYPE_NAME = '制造体系计件人数(含劳务派遣)' GROUP BY D_DATE ORDER BY D_DATE ) t1 ON t0.D_DATE = t1.D_DATE
ORDER BY
t0.D_DATE
) t2
) t3

边栏推荐
- Chapter 1 - Construction of development environment
- Project topic selection reference
- How to view the container name in pod
- The idea YML file code does not prompt the solution
- Application and value of IVR in VoIP telephone system
- Chapter 2 - getting started
- 为什么LPDDR不能完全代替DDR?
- 漫谈软件缺陷管理的实践
- Learn about spark project on nebulagraph
- 又一开源神器,值得收藏学习!
猜你喜欢

Day110.尚医通:Gateway集成、医院排班管理:科室列表、根据日期统计数据、排班详情

开发项目事半功倍,一款开源的stm32驱动库大集合

Hack the box - Introduction to networking module detailed Chinese tutorial

语法泛化三种可行方案介绍

Application and value of IVR in VoIP telephone system

某公司给每个工位装监控:只为看员工写代码?
![[论文笔记] 面向网络语音隐写的抗分组丢失联合编码](/img/ca/95476b6d4b5765f5fde82cbeda577e.png)
[论文笔记] 面向网络语音隐写的抗分组丢失联合编码

Interview questions for software testing is a collection of interview questions for senior test engineers, which is exclusive to the whole network

CANoe-XML在Test Modules中的应用

unity 像素画导入模糊问题
随机推荐
Using easyexcel to import tables to realize batch insertion of xlsx files ----- MySQL of Linux
unity 像素画导入模糊问题
Application and value of IVR in VoIP telephone system
JS的调用方式与执行顺序
5-year-old Test Engineer - how to choose the next step?
Etcd database source code analysis - cluster membership changes log
Realize channel routing based on policy mode
Can you make a JS to get the verification code?
秋招-准备计划
二叉排序树(BST) ~
1.12 Web开发基础
Debugging sharp weapon! A lightweight log library log.c
光量子里程碑:6分钟内解决3854个变量问题
Kingbasees SQL language reference manual of Jincang database (9. Common DDL clauses)
L. Link with Level Editor I dp
顺序查找,折半查找,分块查找 ~
Solve vagrant's error b:48:in `join ': incompatible character encodings: GBK and UTF-8 (encoding:: Compatib
解决Vagrant报错b:48:in `join‘: incompatible character encodings: GBK and UTF-8 (Encoding::Compatib
[论文笔记] 面向网络语音隐写的抗分组丢失联合编码
Day110. Shangyitong: gateway integration, hospital scheduling management: Department list, statistics based on date, scheduling details