大体思路:

MySQL没有类似oracle方便的统计函数,只能靠自己去硬计算:通过时间字段直接增加年份、月份,然后通过left join关联时间字段去计算环比、同比公式即可

原始表结构:

求同比SQL:

-- 按年同比SELECT t5.*, CASE WHEN t5.last_energy_year IS NULL OR t5.last_energy_year =0 THEN 0.00ELSE FORMAT(((t5.energy_year - t5.last_energy_year)/t5.last_energy_year)*100,2) END YoY  -- 同比
FROM ( SELECT t3.*,t4.last_energy_yearFROM (SELECT DATE_FORMAT(CONCAT(t1.`tyear`, '-', t1.`tmonth`,'-01'),'%Y-%m-%d') AS YearMonth,t1.tyear,SUM(t1.energy_month) energy_year,t1.linenameFROM(SELECT t.*,COUNT(DISTINCT t.`tyear`,t.`tmonth`,t.`linename`) c_cot FROM `ksh_tgyjy_llxgyjydlxx` t GROUP BY t.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1GROUP BY t1.tyear,t1.`linename`) t3 LEFT JOIN (SELECT DATE_ADD(DATE_FORMAT(CONCAT(t1.`tyear`, '-', t1.`tmonth`,'-01'),'%Y-%m-%d'),INTERVAL 1 YEAR) AS lastYearMonth,t1.tyear,SUM(t1.energy_month) last_energy_year,t1.linenameFROM(SELECT t.*,COUNT(DISTINCT t.`tyear`,t.`tmonth`,t.`linename`) c_cot FROM `ksh_tgyjy_llxgyjydlxx` t GROUP BY t.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1GROUP BY t1.tyear,t1.`linename`) t4ON t3.YearMonth = t4.lastYearMonthAND t3.linename = t4.linename
) t5

查询结果:

求月环比SQL:

-- 按月同比SELECT DATE_FORMAT(t5.YearMonth,'%Y-%m') YearMonth,t5.`linename`,t5.`energy_month`, CASE WHEN t5.lat_energy_month IS NULL OR t5.lat_energy_month=0 THEN 0.00ELSE FORMAT(((t5.energy_month - t5.lat_energy_month)/t5.lat_energy_month)*100,2) END YoY
FROM ( SELECT t3.*,t4.energy_month lat_energy_monthFROM (SELECT DATE_FORMAT(CONCAT(t1.`tyear`, '-', t1.`tmonth`,'-01'),'%Y-%m-%d') AS YearMonth,t1.*FROM(SELECT t.*,COUNT(DISTINCT t.`tyear`,t.`tmonth`,t.`linename`) c_cot FROM `ksh_tgyjy_llxgyjydlxx` t GROUP BY t.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1) t3 LEFT JOIN (SELECT DATE_ADD(DATE_FORMAT(CONCAT(t1.`tyear`, '-', t1.`tmonth`,'-01'),'%Y-%m-%d'),INTERVAL 1 YEAR) AS lastYearMonth,t1.* FROM(SELECT t.*,COUNT(DISTINCT t.`tyear`,t.`tmonth`,t.`linename`) c_cot FROM `ksh_tgyjy_llxgyjydlxx` t GROUP BY t.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1) t4ON t3.YearMonth = t4.lastYearMonthAND t3.linename = t4.linename
) t5

查询结果:

MySQL统计同比环比SQL相关推荐

  1. oracle 统计同比 环比,oracle求同比,环比函数(LAG与LEAD)的详解

    Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率. 复制代码 代码如下: CREATE TABL ...

  2. mysql实现同比环比的计算

    同比: select t5.m,FORMAT(((t5.newhan-t5.oldhan)/t5.oldhan)*100,2) from ( select t3.month as m,t3.avg_h ...

  3. 同比环比 sql 帆软frdemo订单表,订单明细表

    with tab1 as( select a.原年月,a.原数量, (select b.原数量 from (select substr(订购日期,0,8)原年月,sum(数量)原数量 from 订单 ...

  4. Mysql统计库表大小sql整理

    1. 查看该数据库实例下所有库大小,得到的结果是以MB为单位 1 2 3 4 5 6 7 mysql> select table_schema,sum(data_length)/1024/102 ...

  5. 【Mysql实战】使用存储过程和计算同比环比

    背景 同环比,是基本的数据分析方法.在各类调研表中屡见不鲜,如果人工向前追溯统计数据,可想而知工作量是非常大的. 标题复制10行,并且每行大于10个字符[源码解析]SpringBoot接口参数[Mys ...

  6. 使用 SQL 实现同比环比分析

    场景描述 在做数据分析时,经常会需要展示同比和环比的数据,可以通过 SQL 来完成同比和环比的计算,再配合数据可视化工具进行展示,每个月都会自动展示当月数据与上月的对比(环比),以及当月数据与去年同期 ...

  7. 同比环比日期计算、本周一、本周日、上周一、上周日(mysql)

    目录 1 所需基础日期查询实现 2 根据业务表实际查询操作 2.1 简单查询 2.2 查询优化: 2.3  在mybatis中 查询,关联业务信息实现 1 所需基础日期查询实现 (1)在计算同比环比时 ...

  8. mysql报表统计 优化_关于SQL调优与报表的性能优化

    前一段时间做了某产品实时统计的报表,这周在对报表性能进行优化. 其中逐步积累了一些优化经验,总结一下记录下来,欢迎大家一起探讨. 本文仅限于探讨单个数据库的查询sql及统计报表调优,不涉及分布式数据库 ...

  9. mysql查询同一年入职的_按年份统计入职人数sql语句

    按年份统计入职人数sql语句 /* 员工编号 部门 入职时间 离职时间(离职空值即没有请辞) 123 00 20050203 20070101 124 00 20071231 20080504 125 ...

最新文章

  1. C++基础day01 程序设计方法的发展历程
  2. 2.QML组件、图像几何变换和元素定位器
  3. docker启动elasticsearch失败--jvm内存不足解决方案
  4. python爬取岗位数据并分析_区块链岗位薪资高,Python爬取300个区块链岗位分析,龙虎榜出炉...
  5. Flex与.NET互操作(三):基于WebService的数据访问(下)
  6. 第六章:系统困境之 你的努力与时代进程相逆
  7. 数论--康托展开与逆康托展开模板
  8. 苹果html抓包,苹果被开发者“抓包”违反了自己定的规则
  9. Python编程常见出错信息及原因分析(5):安装扩展库
  10. windows系统禁止更改服务启动类型_能源管理系统SMARTCOLLECT常见问题解答
  11. 数据泵工具导出的步骤(用于Oracle11G和10G之间的相互转换)
  12. Linux系统的命令应该如何记
  13. oracle 判断条件不在某一时间范围内(not between)
  14. 2023年全国最新二级建造师精选真题及答案34
  15. 怎么网络同步计算机的本地时间,VBA实现本地计算机时间与网服务器时间的同步...
  16. 操作系统——(9)磁盘存储器的管理
  17. HTTP中常见的状态码代表的意思比如202、303、404、505、访问网络时有时经常见的状态,也是面试题中关于HTTP经常出现的
  18. python中的库有哪些餐厅_推荐一些实用的的 Python 库
  19. win10如何更改计算机用户名,怎么更改账户用户名,教你win10系统更改账户用户名称教程...
  20. 2022年最新《谷粒学院开发教程》:5 - 章节管理

热门文章

  1. 【手撕算法】HC显著性检测算法
  2. 【组合逻辑电路】——编码器
  3. ZC706P+ADRV9009连接RADIOVERSE详解之二
  4. QQ音乐for mac~下载歌曲到本地
  5. Codeforces Round #429 (Div. 2):B. Godsend
  6. Cesium 鼠标操作习惯设置
  7. H5新特性:canvas学习2
  8. 【概率论与数理统计(研究生课程)】知识点总结8(假设检验)
  9. 根据经纬度计算地球两点之间的距离
  10. 项目路演/课题答辩/毕业论文答辩PPT制作