mysql计算同比和环比的区别_MySQL统计同比环比SQL
大体思路:
MySQL没有类似oracle方便的统计函数,只能靠自己去硬计算:通过时间字段直接增加年份、月份,然后通过left join关联时间字段去计算环比、同比公式即可
原始表结构:
求同比SQL:
-- 按年同比
SELECTt5.*,CASEWHENt5.last_energy_yearISNULLORt5.last_energy_year =0THEN0.00
ELSEFORMAT(((t5.energy_year - t5.last_energy_year)/t5.last_energy_year)*100,2)
ENDYoY-- 同比
FROM(
SELECTt3.*,t4.last_energy_year
FROM
(
SELECTDATE_FORMAT(CONCAT(t1.`tyear`,‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘)ASYearMonth,t1.tyear,SUM(t1.energy_month) energy_year,t1.linename
FROM(SELECT
t.*,COUNT(DISTINCTt.`tyear`,t.`tmonth`,t.`linename`) c_cot
FROM`ksh_tgyjy_llxgyjydlxx` t
GROUPBYt.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1
GROUPBYt1.tyear,t1.`linename`
) t3
LEFTJOIN
(
SELECTDATE_ADD(DATE_FORMAT(CONCAT(t1.`tyear`,‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘),INTERVAL 1YEAR)ASlastYearMonth,t1.tyear,SUM(t1.energy_month) last_energy_year,t1.linename
FROM(SELECTt.*,COUNT(DISTINCTt.`tyear`,t.`tmonth`,t.`linename`) c_cot
FROM`ksh_tgyjy_llxgyjydlxx` t
GROUPBYt.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1
GROUPBYt1.tyear,t1.`linename`
) t4
ONt3.YearMonth = t4.lastYearMonth
ANDt3.linename = t4.linename
) t5-- 按年同比SELECT t5.*, CASE WHEN t5.last_energy_year IS NULL OR t5.last_energy_year =0 THEN 0.00 ELSE FORMAT(((t5.energy_year - t5.last_energy_year)/t5.last_energy_year)*100,2) END YoY -- 同比FROM ( SELECT t3.*,t4.last_energy_year FROM ( SELECT DATE_FORMAT(CONCAT(t1.`tyear`, ‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘) AS YearMonth,t1.tyear,SUM(t1.energy_month) energy_year,t1.linename 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 GROUP 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.linename 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 GROUP BY t1.tyear,t1.`linename` ) t4 ON t3.YearMonth = t4.lastYearMonth AND t3.linename = t4.linename ) t5
查询结果:
求月环比SQL:
-- 按月同比
SELECTDATE_FORMAT(t5.YearMonth,‘%Y-%m‘) YearMonth,t5.`linename`,t5.`energy_month`,
CASEWHENt5.lat_energy_monthISNULLORt5.lat_energy_month=0THEN0.00
ELSEFORMAT(((t5.energy_month - t5.lat_energy_month)/t5.lat_energy_month)*100,2)
ENDYoY
FROM(
SELECTt3.*,t4.energy_month lat_energy_month
FROM
(
SELECTDATE_FORMAT(CONCAT(t1.`tyear`,‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘)ASYearMonth,t1.*
FROM(SELECT
t.*,COUNT(DISTINCTt.`tyear`,t.`tmonth`,t.`linename`) c_cot
FROM`ksh_tgyjy_llxgyjydlxx` t
GROUPBYt.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1
) t3
LEFTJOIN
(
SELECTDATE_ADD(DATE_FORMAT(CONCAT(t1.`tyear`,‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘),INTERVAL 1YEAR)ASlastYearMonth,t1.*
FROM(SELECTt.*,COUNT(DISTINCTt.`tyear`,t.`tmonth`,t.`linename`) c_cot
FROM`ksh_tgyjy_llxgyjydlxx` t
GROUPBYt.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1
) t4
ONt3.YearMonth = t4.lastYearMonth
ANDt3.linename = t4.linename
) t5-- 按月同比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.00 ELSE FORMAT(((t5.energy_month - t5.lat_energy_month)/t5.lat_energy_month)*100,2) END YoYFROM ( SELECT t3.*,t4.energy_month lat_energy_month FROM ( 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 ) t4 ON t3.YearMonth = t4.lastYearMonth AND t3.linename = t4.linename) t5
查询结果:
mysql计算同比和环比的区别_MySQL统计同比环比SQL相关推荐
- mysql计算两个经纬度之间的距离_mysql计算两个经纬度之间的距离公式
#1.两点距离(1.4142135623730951)select st_distance(point(0,0),point(1,1));select st_distance(point (120.1 ...
- mysql典型安装和完全安装的区别_MySQL安装详解(安装版本mysql-5.5.25)
步骤1:选择安装类型 有3种安装类型:Typical(典型安装).Complete(完全安装)和Custom(定制安装). Typical(典型安装)安装:只安装MySQL服务器.mysql命令行客户 ...
- mysql唯一索引和联合索引的区别_mysql中,索引,主键,唯一索引,联合索引的区别...
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度. ...
- mysql双重分组没有值也要显示_mysql 统计数据,按照日期分组,把没有数据的日期也展示出来...
因为业务需求,要统计每天的新增用户并且要用折线图的方式展示. 如果其中有一天没有新增用户的话,这一天就是空缺的,在绘制折线图的时候是不允许的,所有要求把没有数据的日期也要在图表显示. 查询2019-0 ...
- mysql查询前12个月的数据_MySQL 统计过去12个月的数据(包括本月),mysql本月
MySQL 统计过去12个月的数据(包括本月),mysql本月 1.问题 需要统计过去12个月的数据,如现在是2015年4月,那么我们需要统计从2014年5月到2015年4月的数据情况.而这12个月中 ...
- mysql 从第几个字符串开始截取_MySQL 截取字符串函数的sql语句
1.left(name,4)截取左边的4个字符 列: SELECT LEFT(201809,4) 年 结果:2018 2.right(name,2)截取右边的2个字符 SELECT RIGHT(201 ...
- mysql查询一周内数据并分组_mysql 统计本周7天的数据并分组
今天写到项目的一个数据展示模块,最终要呈现的效果是用柱状图显示本周七天的访客数量,所以要给前端本周7天的数据 比如今天是周二(实际上也是),我们要给前端周一周二的数据,后面周三到周日因为还没到,数据置 ...
- mysql查询同一年入职的_按年份统计入职人数sql语句
按年份统计入职人数sql语句 /* 员工编号 部门 入职时间 离职时间(离职空值即没有请辞) 123 00 20050203 20070101 124 00 20071231 20080504 125 ...
- MySQL统计同比环比SQL
大体思路: MySQL没有类似oracle方便的统计函数,只能靠自己去硬计算:通过时间字段直接增加年份.月份,然后通过left join关联时间字段去计算环比.同比公式即可 原始表结构: 求同比SQL ...
- 大数据比较 同比与环比的区别
https://www.xiaozhuvideo.com/pages/90246 同比和环比的区别 环比所表示连续2个统计周期内的量的变化比,它反映的是本期比上期增长了多少.而同比一般情况下是今年第n ...
最新文章
- asp access的安全:不要认为简单的改后缀mdb为asp就能防下载
- GIPC2018年度中国专利代理十强
- SAP License:SAP中的一些扩展表
- java输入文件名_java输入输出---读取文件名
- 独立游戏佳作分享-001(FEZ、Braid、Super Meat Boy)
- 财务分析报表APP的功能优势
- 旋转式光电编码器的设计动向
- 矩阵快速幂 算法原理
- 用html+css制作简单好看的登陆注册界面
- Flutter AspectRatio 宽高比设定
- Keil 编译显示变量重复定义问题
- 【新书速递】Unity AR/VR 开发必知必会
- 安装gfortran
- 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(4)
- Android界面布局练习
- 波束形成 基于对角加载的稳健自适应波束形成
- 【小白学JAVA】QQ第三方登陆Demo
- ./configure make make install 编译安装和卸载 (Linux)
- 外延生长在GaAs衬底上的 Fez0 单晶薄膜-供应压铸铝合金表面耐蚀性银基非晶/易降解的镀铝/顶层金属薄膜定制
- 【数据结构】链表其实并不难 —— 手把手带你实现双向链表
热门文章
- magicbook屏幕_荣誉Magicbook 15降压笔记本电脑的最佳爆炸现在
- win10计算机怎么拨号上网,Win10怎么设置自动连接宽带_Win10怎么设置自动拨号连接上网-192路由网...
- 两个tplink路由器有线桥接_TP-Link路由器的有线桥接图解
- 32768强制转换成short类型和char类型为什么是-32768和0?
- FTP无法在资源管理器中打开
- Python爬虫——查询英语四、六级成绩
- python逆时针画圆_python 逆时针
- ctfshow 做题 MISC入门 模块 11-20
- 个人学习笔记---Linux内存:内存管理的实质
- 2019JAVA面试题精粹附答案