ORACLE——一条SQL计算同比、环比

简介: ORACLE——一条SQL计算同比、环比

按照月份进行计算:

SELECT 
D.YEARMONTH,
D.VALUE,
TO_CHAR(NVL(ROUND(DECODE(D.monthOnMonth,0,NULL,(D.VALUE - D.monthOnMonth )/D.monthOnMonth * 100),2), 0), 'fm9999999990.00') || '%' 环比增长率,
TO_CHAR(NVL(ROUND(DECODE(D.yearOnYear,0,NULL,(D.VALUE - D.yearOnYear)/D.yearOnYear * 100),2), 0),'fm9999999990.00')  || '%' 同比增长率
FROM (
    SELECT
    C.YEARMONTH,
    C.VALUE,
    LAG (C.VALUE, 1, 0) OVER (ORDER BY C.YEARMONTH) AS monthOnMonth,
    LAG (C.VALUE, 12, 0) OVER (ORDER BY C.YEARMONTH) AS yearOnYear
    FROM (
        SELECT A.YEARMONTH, NVL(B.VALUE, 0) VALUE FROM 
            (SELECT TO_CHAR( ADD_MONTHS( TO_DATE( '202101', 'yyyyMM' ), ROWNUM - 1), 'yyyyMM') AS YEARMONTH FROM DUAL CONNECT BY ROWNUM <= months_between( to_date('202212', 'yyyyMM'), to_date( '202101', 'yyyyMM')) + 1) A
        LEFT JOIN
            (
                SELECT TO_CHAR(CYJSSJ, 'yyyyMM') YEARMONTH, NVL(COUNT(*), 0) VALUE FROM BA_JBXX WHERE TO_CHAR(CYJSSJ, 'yyyyMM') >=  202101 AND TO_CHAR(CYJSSJ, 'yyyyMM') <= 202212 
                GROUP BY TO_CHAR(CYJSSJ, 'yyyyMM') ORDER BY TO_CHAR(CYJSSJ, 'yyyyMM')
            ) B 
        ON A.YEARMONTH = B.YEARMONTH ORDER BY A.YEARMONTH
    ) C
) D WHERE D.YEARMONTH >= 202001 AND D.YEARMONTH <= 202212
相关文章
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
278 8
|
6月前
|
SQL 存储 大数据
Dataphin V5.0:支持创建异步调用API,实现慢 SQL 复杂计算的直连消费
本文介绍了数据服务产品中异步调用的应用场景与优势,包括大数据引擎查询、复杂SQL及大规模数据下载等场景,解决了同步调用可能导致的资源浪费和性能问题。通过创建异步API、测试发布以及权限申请等功能,实现高效稳定的服务提供。以电商订单查询为例,展示了如何利用异步调用提升系统性能与用户体验。
273 9
|
7月前
|
SQL Oracle 关系型数据库
解决大小写、保留字与特殊字符问题!Oracle双引号在SQL中的特殊应用
在Oracle数据库开发中,双引号的使用是一个重要但易被忽视的细节。本文全面解析了双引号在SQL中的特殊应用场景,包括解决标识符与保留字冲突、强制保留大小写、支持特殊字符和数字开头标识符等。同时提供了最佳实践建议,帮助开发者规避常见错误,提高代码可维护性和效率。
279 6
|
8月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
8月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
【YashanDB知识库】yashandb执行包含带oracle dblink表的sql时性能差
|
8月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
10月前
|
SQL Oracle 关系型数据库
如何在 Oracle 中配置和使用 SQL Profiles 来优化查询性能?
在 Oracle 数据库中,SQL Profiles 是优化查询性能的工具,通过提供额外统计信息帮助生成更有效的执行计划。配置和使用步骤包括:1. 启用自动 SQL 调优;2. 手动创建 SQL Profile,涉及收集、执行调优任务、查看报告及应用建议;3. 验证效果;4. 使用 `DBA_SQL_PROFILES` 视图管理 Profile。
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
1520 6
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
524 13

推荐镜像

更多
下一篇
oss云网关配置