快速计算环比数据(怎么简单实现同比)
快速计算环比数据(怎么简单实现同比)
2024-07-01 02:21:01  作者:连干你  网址: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)

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

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

快速计算环比数据(怎么简单实现同比)(2)

示例表结构和数据

通过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

计算结果:

快速计算环比数据(怎么简单实现同比)(3)

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.月份

快速计算环比数据(怎么简单实现同比)(4)

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

快速计算环比数据(怎么简单实现同比)(5)

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

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

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

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

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

快速计算环比数据(怎么简单实现同比)(6)

快速计算环比数据(怎么简单实现同比)(7)

3.2 使用数据分析表达式

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

快速计算环比数据(怎么简单实现同比)(8)

快速计算环比数据(怎么简单实现同比)(9)

快速计算环比数据(怎么简单实现同比)(10)

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

快速计算环比数据(怎么简单实现同比)(11)

  • 大雨还在下歌词(大雨还在下歌的简单介绍)
  • 2024-07-01大雨还在下歌的简单介绍歌词窗外雨声滴滴嗒嗒三天三夜都还在那下犹如我最爱的你呀三天三夜都不接电话难道这份情就这样走了这就是你的回答我不介意你爱上了他我只担心你过的好吗这么多年一直千辛万苦只为了爱在挣扎这么多年一直用尽所有赶不。
  • 海兰珠为什么26岁才嫁人 二婚海兰珠有多牛
  • 2024-07-01海兰珠为什么26岁才嫁人 二婚海兰珠有多牛她是绝色孀妇,二婚入宫成为皇帝的第一宠妃,皇上为了见她一面,竟然生生丢下几十万兵马,日夜兼程赶回宫中一位征战天下的贤君,竟然能为了她不顾天下,明明只是妃子,却在死后享受到了前所未有的“国葬”这名女子就。
  • 锦绣南歌谁是幕后boss(电视剧锦绣南歌介绍)
  • 2024-07-01电视剧锦绣南歌介绍《锦绣南歌》的幕后boss就是黑衣人是王公,王公就是幕后大Boss坏人幕后boss的最终目标就是想杀了彭城王和沈将军《锦绣南歌》是由华策克顿、克顿影视、乐橘工作室出品,黄斌、李慧珠联合执导,李沁、秦昊。
  • 小米全面屏手机mix2(全面屏2.0时代的行业标杆)
  • 2024-07-01全面屏2.0时代的行业标杆外观篇:温婉如玉的四曲面全陶瓷【机锋评测】这次的小米MIX2采用的是四曲面全陶瓷,尊享版采用的是Unibody全陶瓷机身,这次机锋网拿到的是6GB256GB的普通版就算只是四曲面全陶瓷机身也十分漂亮,。
  • 50岁李英爱状态如少女 还记得大长今里的李英爱吗
  • 2024-07-0150岁李英爱状态如少女 还记得大长今里的李英爱吗哈喽!还记得爆款韩剧《大长今》里的女主李英爱吗?1971年,李英爱出生于韩国首尔她是家里的老幺,家里还有两个哥哥老来意外得女,父母都很宠她,除了祖母老人家思想有些古板,喜欢男孩,所以总会在爸妈上班后把。
  • 羽绒棉服能用洗衣机洗吗(羽绒棉服可以用洗衣机洗吗)
  • 2024-07-01羽绒棉服可以用洗衣机洗吗羽绒棉服能用洗衣机洗羽绒棉纤维较细,不易拉伸,通过搅洗的方式不会变形,因此可以用洗衣机清洗在清洗羽绒棉服之前,可以先用肥皂水等局部清洗衣服较脏的袖口、领口等地,清洗时最好选择中性清洗剂,晾晒后需要两手。
  • 经常按摩头顶百会穴好处(每天摸摸百会穴)
  • 2024-07-01每天摸摸百会穴每天摸摸百会穴,不仅能够变长寿,还可以将我们人体的一半经络以及大部分的穴位都带动起来史料记载《史记.扁鹊仓公列传》载:“扁鹊过虢虢太子死......闻太子不幸而死,臣能生之……扁鹊乃使弟子子阳厉针砥石。
  • 巡游出租车电召服务如何申请(全天在线闭环接送)
  • 2024-07-01全天在线闭环接送澎湃新闻记者俞凯通讯员汝晶晶4月28日中午12时30分,就医保障出租车驾驶员谢秋红如约到达指定小区仔细查看了患者的48小时核酸检测阴性报告、健康码、行程码以及居委会开具的就医说明后,谢秋红载着血透患者。
  • 如何选择孩子书包(如何为孩子挑选合适的书包)
  • 2024-07-01如何为孩子挑选合适的书包首先要查看标志是否齐全,要选择正规商店购买标志齐全的书包,注意查看书包产品的商标、名称、规格型号、执行标准、生产商或经销商名称和地址以及书包材质标注等信息是否齐全,同时重点关注背包的外观和做工在做工方。
  • 关于黄河的诗句古诗简短(总第七十九期执手诗词)
  • 2024-07-01总第七十九期执手诗词黄河文/李展平一部中华史,泱泱入大河傲桀多有害,今驯变清波黄河大和唱文/乡里情一曲黄河怒,中华抗日潮奔流五千载,耳畔复兴谣某期《经典咏流传》观感文/寒梦杰出光未然,不朽冼星海黄河大合唱,遗响千百载西安。