快速计算环比数据(怎么简单实现同比)
快速计算环比数据(怎么简单实现同比)
2024-11-06 02:11:53  作者:连干你  网址:https://m.xinb2b.cn/know/xxd233957.html

在做数据分析时,我们会经常听到同比、环比的概念。各个企业和组织在发布统计数据时,通常喜欢用同比、环比来和之前的历史数据进行比较,用来说明数据的变化情况。例如,统计局公布2022年1月份CPI同比增长0.9%,环比增长0.6%。

实际在基于数据库的数据分析场景中,环比和同比是典型的复杂计算场景之一,特别是在Oracle等商业数据库的分析函数出现之前。以MySQL为例,在8.0版本中才引入了Lag和Lead函数,这两个函数结合开窗函数有效提高了同比、环比等复杂运算的实现效率。在5.x系列版本中,MySQL需要依赖多次嵌套子查询和自关联才能实现此类计算。

我们以一个简单的例子,来分别看下,MySql 5.x和8.0是具体实现同比、环比计算的。

示例数据见表:

CREATE TABLE sales (`产品ID` varchar(20),`销售数量` int(20) ,`销售时间` timestamp(6) NULL DEFAULT NULL)INSERT INTO sales VALUES ('C1001', 15, '2020-06-01 10:10:12');INSERT INTO sales VALUES ('C1002',26, '2020-05-02 0:10:12');INSERT INTO sales VALUES ('C1003', 21, '2020-04-03 0:10:12');INSERT INTO sales VALUES ('C1003', 23, '2020-04-04 0:10:12');INSERT INTO sales VALUES ('C1003', 0, '2020-03-05 0:10:12');INSERT INTO sales VALUES ('C1001', 16, '2020-02-06 3:0:12');INSERT INTO sales VALUES ('C1002', 32, '2020-01-07 0:10:12');INSERT INTO sales VALUES ('C1001', 16, '2019-12-08 0:12:24');INSERT INTO sales VALUES ('C1001', 32, '2019-06-09 0:12:24');INSERT INTO sales VALUES ('C1002', 17, '2019-05-09 0:12:24');


1、MySQL 5.x:通过子查询和关联实现同比和占比计算

以按年月统计不同年份的销售总值,并计算环比(销售总额同比上期)、同比(销售总额同比去年同期)为例。


示例表结构和数据

通过SQL计算环比和同比:

select year(c.销售时间) yy,month(c.销售时间) mm,concat(ifnull(abs(round((sum(c.销售数量)-ss1)/ss1*100,2)),0),'%') 同比,concat(ifnull(abs(round((sum(c.销售数量)-ss2)/ss2*100,2)),0),'%') 环比from sales cleft join (select month(a.销售时间) mm1,year(a.销售时间) yy1,sum(a.销售数量) ss1from sales aGROUP BY mm1,yy1) aon month(c.销售时间) = a.mm1and a.yy1 = year(c.销售时间)-1left join (select month(a.销售时间) mm2,year(a.销售时间) yy2,sum(a.销售数量) ss2from sales aGROUP BY mm2,yy2) bon (b.yy2 = year(c.销售时间) and b.mm2 1 = month(c.销售时间) OR (yy2=year(c.销售时间)-1AND b.mm2 = 12 AND month(c.销售时间) = 1))group by yy, mmorder by yy,mm asc

计算结果:


2、MySQL 8.0:通过分析函数实现同比和占比计算

MySql8.0支持了Lead和Lag分析函数,虽然可以大幅提高同、环比计算的效率,但仍然需要编写SQL语句处理。

2.1计算同比:

select t2.年份,t2.月份,concat(round((t2.数量-t1.数量)/t1.数量,2)*100,'%') as 同比 from (SELECt year(销售时间) as 年份,month(销售时间) as 月份,sum(销售数量) as 数量 from salesgroup by year(销售时间),month(销售时间) order by year(销售时间) desc, month(销售时间) desc) t1,(SELECt year(销售时间) as 年份,month(销售时间) as 月份,sum(销售数量) as 数量 from salesgroup by year(销售时间),month(销售时间) order by year(销售时间) desc, month(销售时间) desc) t2 where t1.年份=t2.年份-1 and t1.月份=t2.月份


2.2计算环比:

SELECtmm,CONCAt(ROUND(IFNULL((xl - first_xl) / first_xl * 100,2),0),'%') AS 环比FROM(SELECtmm,xl,lead (xl, 1) over (ORDER BY mm DESC) AS first_xlFROM(SELECtDATE_FORMAT(销售时间, '%Y-%m') AS mm,sum(销售数量) AS xlFROMsalesGROUP BYDATE_FORMAT(销售时间, '%Y-%m')) t) a


在SqlServer2008R2和Oracle10g之后,都提供了Lag和Lead分析函数。具体的计算逻辑和用法与上述MySQL8.0类似。

3、使用BI工具的计算引擎

针对此类复杂的计算场景,商业智能BI数据分析工具提供了更加高效的解决方案。以Wyn Enterprise嵌入式商业智能软件为例,其内置的wax分析表达式和快速计算引擎,提供直接实现同比、环比等复杂计算的能力,而不再需要写复杂冗长的SQL。

3.1 使用内置的同比、环比快速计算功能

同比、环比等计算一般是BI工具的标准功能,我们可以直接通过设置实现。



3.2 使用数据分析表达式

如果内置快速计算无法满足要求,还可以通过分析表达式实现更复杂的计算。分析表达式是一种更加灵活、强大的数据计算方式,通过丰富的函数,用户可以像Excel公式一样自由组合,实现更加强大的分析能力。分析表达式基于数据模型进行业务计算,以一些定义好的函数运用正确的语法来完成某个复杂的业务逻辑计算。这样可以使用户更灵活地使用数据,最大限度的利用数据。




通过对比SQL和BI数据分析工具在处理同比、环比等复杂计算中的差异,我们可以发现,还是专业的工具在数据计算和处理能力上要更加便捷。以后在工作中,如果有类似的分析计算需求,选择BI分析工具来处理是再合适不过的了。


  • 公网对讲机没有卡怎么用(公网对讲机正确使用方法教程)
  • 2024-11-06公网对讲机正确使用方法教程什么是公网对讲机?公网对讲机如何正确使用?带着这两个疑问,中诺对讲机厂家为大家一一介绍:1、熟悉公网集群通信特点,掌握操作方法公网集群对讲机不同于普通移动电话的全双工通信方式,也不同于普通对讲机的单工。
  • 一日不见我就思念成灾(天涯各安相思绵绵)
  • 2024-11-06天涯各安相思绵绵闭上眼,脑海中依旧保留着你最初的笑容,时光流转,岁月变迁,在这匆匆而逝的光阴里,最难忘记的就是你暖暖的笑颜,明知它不再是我的风景,却还是心不由己的沦陷恰如林徽因在《最美四月天》中所说:我说你是人间的四。
  • 新一代福克斯三缸挑战赛(更加运动和科技感)
  • 2024-11-06更加运动和科技感2018年8月31日,长安福特在成都车展宣布了新一代福克斯正式启动预售,预售价11.58万起作为一款基于福特全新中级车平台打造的潮流智趣座驾,新一代福克斯进一步刷新了驾驶乐趣的标准,并以更加运动的外观。
  • 幼儿十月拍照姿势(朋友圈上演晒月大赛)
  • 2024-11-06朋友圈上演晒月大赛昨晚天公作美,能见度很好,不少人在朋友圈、微博上演“晒月大赛”请欣赏!明月当空照亮团圆人圆月跃上鹭江道的世纪中心,仿佛被大楼的夜景灯托衬着鼓浪屿皓月园外的沙滩上,游客以月亮为背景合影一轮圆月挂夜空海上。
  • 筒子楼卖什么东西好 夜读
  • 2024-11-06筒子楼卖什么东西好 夜读作者:张永红在原北京军区政治部工作过的同志,有许多在那栋楼里住过虽然有早有晚,有长有短,但都印象深刻那就是大院东南角一栋极为破旧的筒子楼——33楼这栋楼始建于上世纪60年代,已有五六十年的历史,至今仍。
  • 老是梦中家中亲人去世(梦中有鬼之亲人托梦)
  • 2024-11-06梦中有鬼之亲人托梦对于亲人托梦一事不知道大家都有着怎样的看法有人说,亲人托梦是因为逝去的人还放不下活着的亲人;也有人说是活着的人对逝去的亲人的执念;也有人说只是一场奇异的梦而已!那亲人托梦到底是真的,还是假的呢?听听下。
  • 梦见手机被偷了是什么意思(梦见手机被偷了的解释)
  • 2024-11-06梦见手机被偷了的解释梦到手机被偷,得此梦,五行主水,事业多受他人之影响,身边小人多之迹象,财运难以兴旺,冬天梦之基利,春天梦之不吉利在外求财者梦到手机被偷,往北走吉利,往南走不吉利,与属龙之人,属马之人共同求财,事业虽有。
  • 渭南华县周边游玩景点推荐(陕西渭南竹溪里)
  • 2024-11-06陕西渭南竹溪里竹溪里位于陕西省渭南市华州区高塘镇境内,为陕西旅游特色名镇和重点建设渭华革命老区景区建筑以江南黑瓦白墙的建筑特色为主基调,结合秦岭塬区特有的自然风貌、水文地理优势,形成依山伴水,独具一格的江南水乡风景。
  • 正宗陕西潼关肉夹馍的做法(正宗肉夹馍制作)
  • 2024-11-06正宗肉夹馍制作陕西肉夹馍是正宗的陕西特色美食小吃,从陕西本地人的喜爱已经走向了全国人的都喜欢吃的美食,甚至在国外,也有不少人开始经营陕西肉夹馍尤其是陕西老潼关肉夹馍更是声名远扬,许多人都喜欢尤其是年轻人十分喜欢吃,。
  • 宝宝烫伤水泡该不该弄破(宝宝烫伤有水泡怎么办)
  • 2024-11-06宝宝烫伤有水泡怎么办小宝宝磕磕碰碰,烫伤摔伤都是经常发生的小意外但是如果宝宝烫伤时家长没有正确护理,有可能会让宝宝经受更大的伤害那么,宝宝烫伤该怎样处理呢?下面菡妈给大家整理一些需要注意的问题11水泡不要立即挑破,要根据。
  • 无烟日的由来(无烟日的由来介绍)
  • 2024-11-06无烟日的由来介绍在1987年11月,世界卫生组织在日本东京举行的第6届吸烟与健康国际会议上建议把每年的4月7日定为世界无烟日(WorldNo-TobaccoDay),并从1988年开始执行,但从1989年开始,世界无。
  • pr导入素材没有画面只有声音(pr导入素材没有音轨怎么办)
  • 2024-11-06pr导入素材没有音轨怎么办在使用pr的过程中,有时会遇到导入视频素材没有音轨的问题,如果遇到这样的问题,大家该怎么办呢?今天就来讲解如何解决pr导入素材没有音轨的问题,大家一定要认真学习,下面我们进入教程操作步骤如下:1、打开。