快速计算环比数据(怎么简单实现同比)
快速计算环比数据(怎么简单实现同比)
2024-11-22 07:59:26  作者:连干你  网址:https://m.xinb2b.cn/tech/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-22爽口凉菜开胃一夏所有材料混合揉至光滑的面团(白糖也可不放,我放习惯了基本上蒸馒头都会放少许)水量根据面粉洗水性添加哈揉匀后醒发,我是晚上拌好的面放冰箱里醒发至第二天早上用的从冰箱里取出回温5分钟左右,揉成光滑的面团,。
  • 百鬼丸是什么动漫(了解下他的角色形象)
  • 2024-11-22了解下他的角色形象是电视动画《多罗罗》以及手冢治虫同名漫画的男主角百鬼丸因为父亲的野心成为牺牲品,在出生的时候被鬼神夺走包括脸、双耳、双眼、鼻子、声音、触觉(痛觉)、脊椎、四肢(算四个部位)12个部位(漫画是48个)最。
  • 古人对衣服的雅称
  • 2024-11-22古人对衣服的雅称中国古代古人对衣服的雅称有裳、锦衣、羽衣、袍服、白丁、白袍、布衣、青衿等雅称古代人对衣服的称呼有很多,因为古代不同阶层的人穿的衣服是不同的,人们会根据不同服饰名称来称呼不同阶层的人比如黄裳,黄色代表金。
  • 非的组词(非怎么组词)
  • 2024-11-22非怎么组词组词:无事生非、非同寻常、非特、拒谏饰非、文过饰非、错非、惹是非、非独、非笑、北非、非人、非礼、非命、非得、非法、今非昔比、痛改前非、胡作非为、明辨是非、搬弄是非非(拼音:fēi),是汉语通用规范一级。
  • toy hunter 一番赏潮玩集合店(探店广州潮玩新店TOP)
  • 2024-11-22探店广州潮玩新店TOPTOPTOY超齐全的潮玩集合店TOPTOY开业啦!地点:广州正佳广场1层西门入口处(可乘坐地铁三号线到达石牌桥站)潮玩、盲盒、手办在此一网打尽!娃娃超级可爱,款式超级多,还有各种动漫手办,还有仅供展示。
  • 日照公路交通优化(跃居全省第二位)
  • 2024-11-22跃居全省第二位齐鲁网·闪电新闻8月21日讯日前,《2021年全省公共服务质量监测情况分析报告》公布,从全省公共服务质量检测结果看,日照市在公共交通领域以总体满意度90.89分的成绩,跃居全省第2位优化公交线网在出行。
  • 优酷会员电视剧推荐甜剧已播(优酷网剧反黑上线Netflix)
  • 2024-11-22优酷网剧反黑上线Netflix由优酷出品,陈小春、陈国坤等主演的网剧《反黑》2月5日登陆Netflix平台,在全球195个国家和地区播出该剧讲述的是卧底探员陈凤翔(陈小春饰)在破获一宗社团大案之后,转任文职八年被反黑组重新招回,他。
  • 八字起名网介绍
  • 2024-11-22八字起名网介绍八字起名是起名网基于AI人工智能科学、名字统计学、汉语语言文学、名字印象心理学、古代诗词国学、以及结合中国传统八字起名民俗文化而来的大数据AI人工智能科学起名系统,并拥有自主知识产权著作权。
  • 上海五角场房价走势(上海五角场康桥)
  • 2024-11-22上海五角场康桥扒拉房价君今日统计了上海2017-10-31的房源调价情况,共有67套房源上调挂牌价,356套房源下调挂牌价新上300套房源按城区统计的调价排行:城区下调上调浦东6518闵行4610宝山384松江30。
  • 活该自己被骗(差点被骗)
  • 2024-11-22差点被骗2022年9月14日16时38分,襄城县公安局山头店派出所副所长秦浩垒接到许昌“金钟罩”的电信诈骗预警提醒:辖区寺门村一村民存在被诈骗的风险,诈骗类型为冒充公检法及政府机关类秦浩垒立即与辅警何世通、张。
  • 甜到炸裂的校园剧网上最火的(二进制恋爱甜宠校园剧)
  • 2024-11-22二进制恋爱甜宠校园剧甜宠剧一直都是剧集市场里经久不衰的题材,毕竟谁不爱看甜甜的恋爱呢?《二进制恋爱》开播仅8集豆瓣就被四星、五星好评刷屏,口碑大爆,接下来就跟我一起来看这部剧有多好看吧!《二进制恋爱》讲的是计算机系学霸方。
  • 飞利浦电熨斗hd1465参数(PHILIPS飞利浦GC2920)
  • 2024-11-22PHILIPS飞利浦GC2920优惠精选优惠力度飞利浦2000w电熨斗好价京东目前特价179元,近期好价,有需求的网友们可以关注值友爆料原文价格全网新低,用过的都知道很不错,现在团购价格179,叠加优惠券可以做到169,这价格没谁了。