我们来看下计算公式:

1、同比环比计算规则

月度环比=(本月-上月)/上月*100%

月度同比=(当年本月-上年本月)/上年本月*100%

年度同比=(今年-去年)/去年*100%


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for finance
-- ----------------------------
DROP TABLE IF EXISTS `finance`;
CREATE TABLE `finance`  (`id` int(12) NOT NULL,`amount` decimal(6, 0) NULL DEFAULT NULL,`dt` timestamp(0) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;-- ----------------------------
-- Records of finance
-- ----------------------------
INSERT INTO `finance` VALUES (1, 22, '2021-01-01 15:54:05');
INSERT INTO `finance` VALUES (2, 11, '2021-01-03 15:55:13');
INSERT INTO `finance` VALUES (3, 55, '2021-02-11 15:56:52');
INSERT INTO `finance` VALUES (4, 55, '2021-03-19 15:58:14');
INSERT INTO `finance` VALUES (5, 33, '2021-04-22 15:58:57');
INSERT INTO `finance` VALUES (6, 22, '2022-01-01 16:09:08');
INSERT INTO `finance` VALUES (7, 23, '2022-02-01 16:09:35');
INSERT INTO `finance` VALUES (8, 33, '2022-03-01 16:09:58');SET FOREIGN_KEY_CHECKS = 1;

上面是收入表:

我要统计年度同比:(今年-去年)/去年*100%

 select t1.dtYear,t1.sumAmount,t2.latSumAmount, CASEWHEN latSumAmount IS NULLOR latSumAmount = 0 THEN0 ELSE ( CONVERT ( ( ( sumAmount - latSumAmount ) / latSumAmount ) * 100, DECIMAL ( 10, 2 ) ) )END hbfrom (SELECTdate_format(f.dt,'%Y') dtYear,SUM(f.amount) as sumAmountFROMfinance f GROUP BY dtYear) t1left join (SELECTdate_format(f.dt,'%Y') dtYear,SUM(f.amount) as latSumAmountFROMfinance f GROUP BY dtYear) t2 on t1.dtYear = t2.dtYear + 1

月度环比:月度环比=(本月-上月)/上月*100%

 select t1.dtMonth,t1.sumAmount,t2.lastMonthsumAmount,CASEWHEN lastMonthsumAmount IS NULLOR lastMonthsumAmount = 0 THEN0 ELSE ( CONVERT ( ( ( sumAmount - lastMonthsumAmount ) / lastMonthsumAmount ) * 100, DECIMAL ( 10, 2 ) ) )END monthhbfrom  (SELECTdate_format( f.dt, '%Y-%m' ) dtMonth,SUM( f.amount ) AS sumAmount FROMfinance f GROUP BYdtMonth)t1 left join (SELECT DATE_FORMAT(DATE_ADD(f.dt,INTERVAL 1 MONTH),'%Y-%m') as lastMonth,SUM( f.amount ) AS lastMonthsumAmount FROMfinance f GROUP BYlastMonth) t2 on t1.dtMonth = t2.lastMonth

月度同比=(当年本月-上年本月)/上年本月*100%

   select t1.dtMonth,t1.sumAmount,t2.lastYearMonthsumAmount,CASEWHEN lastYearMonthsumAmount IS NULLOR lastYearMonthsumAmount = 0 THEN0 ELSE ( CONVERT ( ( ( sumAmount - lastYearMonthsumAmount ) / lastYearMonthsumAmount ) * 100, DECIMAL ( 10, 2 ) ) )END monthhbfrom  (SELECTdate_format( f.dt, '%Y' ) dtYear,date_format( f.dt, '%Y-%m' ) dtMonth,SUM( f.amount ) AS sumAmount FROMfinance f GROUP BYdtYear,dtMonth)t1 left join        (SELECT date_format( f.dt, '%Y' ) dtYear,date_format( f.dt, '%Y-%m' ) dtMonth,DATE_FORMAT(DATE_ADD(f.dt,INTERVAL 1 YEAR),'%Y-%m') as lastYearMonth,SUM( f.amount ) AS lastYearMonthsumAmount FROMfinance f GROUP BYdtYear,dtMonth,lastYearMonth) t2 on t1.dtMonth = t2.lastYearMonth

mysql统计 同比 环比相关推荐

  1. MySQL统计同比环比SQL

    大体思路: MySQL没有类似oracle方便的统计函数,只能靠自己去硬计算:通过时间字段直接增加年份.月份,然后通过left join关联时间字段去计算环比.同比公式即可 原始表结构: 求同比SQL ...

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

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

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

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

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

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

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

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

  6. 异常检测方法——DBSCAN、孤立森林、OneClassSVM、LOF、同比环比、正态分布、箱线图

    异常检测方法 基于时间序列分析 同比环比 基于统计 单特征且符合正态分布 基于统计 箱线图 基于聚类 DBSCAN 基于树模型 孤立森林 基于线性模型 OneClassSVM 基于密度 LOF 异常检 ...

  7. Echarts 表格通过ajax异步请求实现动态赋值(分析同比环比的实现)

    Echarts 表格通过ajax异步请求实现动态赋值(分析同比环比的实现) 对于ElementUI中使用ECharts在上一篇文章中已经说明具体使用方法 一.效果图:(以每一个月的工业产值为例) 我们 ...

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

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

  9. MySQL 统计天、周、月、年数量

    一.场景描述: 在工作中我们常常需要按照天.周.月.年统计一些信息,或计算同比环比.或利用ECharts数据展示.或利用Pandas 数据分析等等 二.基本方案 将数据库中带时间点的信息,通常为cre ...

  10. mysql合并统计总数,mysql统计多表交织组合总数

    mysql统计多表交叉组合总数 >mysql -h localhost -u root -p mysql> use world; Database changed mysql> sh ...

最新文章

  1. wamp的mysql单独使用_Windows 7+8.1+10 单独安装配置 PHP+Apache+MySQL(不使用 WAMP)
  2. 嵌入式学习:存储器总结
  3. Java知识全面总结:并发编程+JVM+设计模式+常用框架+....
  4. 约翰诺曼超级计算机研究中心,第433章 拉泽尔松教授的决定
  5. 【转】nagios 命令解释
  6. linux 系统命令
  7. 一线上nagios监控参数
  8. HNOI2015 实验比较
  9. Linux Shell 操作命令 ls
  10. puppet-dashboard安装及用apache和nginx进行管理
  11. Python -- 数据加载、存储与文件格式
  12. PHP教程环境--环境搭建
  13. Druid连接池原理
  14. 相机成像时间与曝光时间的关系
  15. 【模型检测学习笔记】8:无限字上ω正则LT性质的验证
  16. Transformer面试 GavinNLP Transformer101之41-50
  17. win10电脑桌面便签怎么添加
  18. 在线教育机构如何运营微信公众号
  19. 【华为OD机试真题 python】水仙花素 【2022 Q4 | 100分】
  20. Spring Boot DAY03 配置文件的注入

热门文章

  1. 测试思维:正向思维和逆向思维
  2. 谈谈外贸自建站收款方式及优缺点有哪些?
  3. item_search_pro - 高级关键字搜索淘宝商品 API
  4. mac删除默认ABC输入法,mac删除自带ABC输入法
  5. uni-app关于tabBar配置
  6. 格力支持鸿蒙吗,董明珠万没想到,格力终将被美的超越,华为鸿蒙“功不可没”...
  7. 十二个“一”---十二位胜似亲人的悲情向团体详解
  8. 关于购买域名的一些建议
  9. 报表生成器FastReport .Net使用Windows.Forms教程
  10. 第3.3节 通过GPIB控制矢量网络分析仪