大体思路:

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. ios - Push远程通知代码设置 DeviceToken
  2. Tomcat介绍及性能优化
  3. ScheduledThreadPoolExecutor定时任务线程池执行原理分析
  4. ocp linux 基础要点
  5. js获取用户当前所在城市(ip)
  6. 趣挨踢 | 阿里员工吐槽:我在阿里工作五年,面试一个小公司竟然挂了
  7. Jquery 获取元素内容
  8. 「Python 编程」编码实现网络请求库中的 URL 解析器
  9. 暴风影音“猝死” ,官网、APP全挂了!网友:我的青春说没就没了
  10. fetch 函数分装
  11. P1273 有线电视网 树形dp
  12. 大数据分析平台如何进行支出跟踪
  13. CentOS 7 安装Java 1.8
  14. Python3 高级编程
  15. 操作系统实验报告清华大学LAB1
  16. 计算机设备硬件维护税收编码,自动化设备的税收编码是多少
  17. NLP——12.词向量及相关应用
  18. js 简单的鼠标指针小图标
  19. 霍夫斯特拉大学计算机科学专业排名,院校排名
  20. WIN10安装cad2006提示无权限安装的解决办法

热门文章

  1. 记一次现网sentinel 造成的端口差异问题
  2. 20230425-PAT甲级1169
  3. python和php哪个好找工作_python和php哪个更有前景
  4. 编程中最佳常量定义方法
  5. 4.标准体重: 男士体重=身高-100±3 女士体重=身高-110±3 输入性别、身高、体重,查看体重是否标准...
  6. 艾司博讯:拼多多千人千面含义及作用
  7. PX4从放弃到精通(二十六):GPS驱动
  8. [转]VBA常用命令解析之001——On Error(将错就错)
  9. 【基础算法】切割钢管与动态规划
  10. 影像裁剪及数据扩充(针对DOTAv1.5进行部分优化)