快速计算环比数据(怎么简单实现同比)
快速计算环比数据(怎么简单实现同比)
2024-07-02 11:21:53  作者:连干你  网址:https://m.xinb2b.cn/sport/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-02长发这么扎才好看欢迎投稿、爆料请联系QQ:16153813商务赞助请联系微信:landy5288蓝迪时尚私号微信号:landy5288分享最新的时尚资讯,穿搭建议,美妆技巧,发布最前沿,最权威的时尚信息!蓝迪时尚是蓝。
  • 多吃番茄是不是能降血糖(糖友生吃或熟吃西红柿)
  • 2024-07-02糖友生吃或熟吃西红柿有的人说西红柿是水果,也有的人说西红柿是蔬菜事实上,这些都无关紧要,关键问题是哪些人能吃,哪些人不能吃?在日常生活中,并没有限制吃西红柿的人群,基本上是一个没有禁忌的存在但也有些人会担心,如糖尿病患者。
  • iwc万国葡萄牙计时腕表测评讲解(万国工程功成万年)
  • 2024-07-02万国工程功成万年[腕表之家腕表品鉴]IWC万国表葡萄牙系列,以开阔、清晰、实用的表盘设计,备受众多表友们喜爱,像葡七、葡计这种热门款式,就被列入很多表友的购表清单中在2020年,正值万国在对葡萄牙系列进行更新,一下推。
  • 创建体量模型非要三个截面吗(创建可变多边形体量)
  • 2024-07-02创建可变多边形体量大家好今天小编给大家讲一讲如何定义一个可变的多边形体量模型,通过参数的控制可以调整体量的边的数量,以此来改变体量的形状,下边让我们一起来看看这个可变的多边形体量模型的创建吧!1、定义一个族选择公制常规。
  • 失败投资案例(当下做投资如此)
  • 2024-07-02当下做投资如此巴菲特忠告:你赚到的每一分钱,都是对这个世界认知的变现查理·芒格说:想要得到一件东西,最稳妥的方法就是让自己配得上它这里的“配得上”,指的就是认知在快速流变的世界里,谁也无法基于当下作出对未来的判断;。
  • 公司如何做好季度月度计划 怎样做好企业年底的盘点计划
  • 2024-07-02公司如何做好季度月度计划 怎样做好企业年底的盘点计划手机电脑云便签,朋友推荐敬业签年关将至,很多企业已经开始着手年底的盘点工作了,对于国人来说,阳历的新年并不算真正意义上的年底,而农历的春节才意味着新年的来临,农历的腊月才是年底怎样做好企业年底的盘点计。
  • 纪念钞 直播间(直播间销售火热的)
  • 2024-07-02直播间销售火热的前些天有朋友在直播间里看到主播在卖生肖纪念钞,主播说这是限量发行的生肖钞,面值100元,做工精美,不仅有纪念币意义,还有收藏价值朋友正好是属鸡的,一心动就直接花了88元下单买下收到货后,朋友经过网上查。
  • 崇尚英雄 才能英雄辈出(英雄回家崇尚英雄)
  • 2024-07-02英雄回家崇尚英雄来源:人民网-中国共产党新闻网原创稿9月15日上午,第九批在韩中国人民志愿军烈士遗骸装殓仪式在韩国仁川举行第九批在韩中国人民志愿军烈士共有88位,他们将于9月16日由中国人民解放军空军运输机运-20接。
  • 留守女孩的问题(向农村孩子们讲)
  • 2024-07-02向农村孩子们讲在浙江缙云上课的时候,董东和学生们相处气氛融洽在讲完如何保护自己之后,董东顺带问了同学一个问题:那么下课之后,你们愿意跟我回家吗?在场的所有孩子都没能意识到这是个陷阱,马上回答:我们愿意跟老师回家!在。
  • 50岁的黎明现状(54岁黎明已退圈3年无作品)
  • 2024-07-0254岁黎明已退圈3年无作品54岁黎明已退圈?根据相关媒体报道,2月16日,54岁的黎明与35岁陈泳仪带着三岁女儿“明公主”出海玩,一家三口坐上价值3000万港元的游艇,享受温馨家庭乐黎明自从2018年10月31日,参演的由杨阳。
  • 哪有智能疏散照明系统厂家(智能疏散系统厂家有哪些)
  • 2024-07-02智能疏散系统厂家有哪些智能疏散系统厂家有哪些?智能疏散系统在城市安防建筑中是不可少的存在,在很多的场所都会进行安装,地铁、小区、办公楼等大型建筑场所都有智能疏散系统的身影,智能疏散系统不仅可以更快速的疏散道路减少人员伤害,。