当前位置:首页 > 知识分享 > 正文内容

今日知识分享年均增速怎么计算

3年前 (2023-05-09)知识分享101

今天继续MySQL的问题,也是一个常见的问题,就是计算同比和环比问题,然后在此思路的基础上做一个复合增长率的计算。在MySQL8.0之前,同比环比的思路是通过LEFT JOIN去把上一期的数据求出来,然后再进行计算。再MySQL8.0之后,计算方式就很简单了,通过窗口函数可以很简单的解决,所以今天介绍的是窗口函数的解决方案。

首先是数据的准备,数据如下,我们准备了从2020-2022三年每天三个产品的交易数据,这里就只把最关键的几个字段给留出来了↓

环比、同比一般是计算月度的,所以我们第一步需要先把数据转换成月维度的数据,这里只需要用到最基础的SQL操作,GROUP BY一下就行了,SQL语句和结果如下↓

  SELECT
    product,
    DATE_FORMAT( s_date, "%Y-%m" ) AS ym,
    SUM( amount ) AS amount,
    SUM( gmv ) AS gmv 
  FROM
    orders
  GROUP BY
    product,ym

这样我们就得到了每个产品每个月的金额和数量了,而且我们这里是按照产品、月份排序的。然后先计算环比,我们就用数量进行举例了,金额是一个道理。思路是我们需要找到当前月份上一个月的销售数量,使用窗口函数的LAG函数,进行一次偏移就行了。就可以得到上月的金额,然后还需要按产品进行分组,也就是OVER里面的PARTION BY 产品,然后通过环比的公式计算一下就行了,SQL语句个结果如下↓

WITH cte AS(
  SELECT
    product,
    DATE_FORMAT( s_date, "%Y-%m" ) AS ym,
    SUM( amount ) AS amount,
    SUM( gmv ) AS gmv 
  FROM
    orders
  GROUP BY
    product,ym
  ORDER BY
    product,ym)
SELECT
  product,ym,amount,
  LAG(amount,1) OVER(PARTITION BY product ORDER BY ym) AS lm_amount,
  CONCAT(ROUND((amount - LAG(amount,1) OVER(PARTITION BY product ORDER BY ym))/
  LAG(amount,1) OVER(PARTITION BY product ORDER BY ym),2),"%") AS MoM_amount
FROM
  cte

这里简单介绍一下,同比和环比的公式↓

环比 = (本月值 – 上月值)/上月值,或者 本月值/上月值-1

同比 = (本月值 – 上年同期值)/上年同期值,或者 本月值/上年同期值-1

然后就是同比,思路和环比一样的,只是偏移的月份从1变成了12,SQL语句和结果如下↓

WITH cte AS(
  SELECT
    product,
    DATE_FORMAT( s_date, "%Y-%m" ) AS ym,
    SUM( amount ) AS amount,
    SUM( gmv ) AS gmv 
  FROM
    orders
  GROUP BY
    product,ym
  ORDER BY
    product,ym)
SELECT
  product,ym,amount,
  LAG(amount,12) OVER(PARTITION BY product ORDER BY ym) AS ly_amount,
  CONCAT(ROUND((amount - LAG(amount,12) OVER(PARTITION BY product ORDER BY ym))/
  LAG(amount,12) OVER(PARTITION BY product ORDER BY ym),2),"%") AS YoY_amount
FROM
  cte

最后是一个巩固练习,使用窗口函数计算复合增长率。先介绍一下复合增长率的公式,就是使用本期的数据除以第一期的数据,然后根据间隔开方,再减一,公式如下↓

CAGR = (Ending Value/Beginning Value)^(1/N)-1

所以我们需要计算两个值,第一个是首期的值,第二个是间隔的期数。两个值都是用窗口函数来计算的,首期使用FIRST_VALUE计算,间隔就用ROW_NUMBER。最后使用我们上面的公司就能计算出复合增长率了,SQL语句和结果如下↓

WITH cte2 AS(
  WITH cte AS(
    SELECT
      product,
      DATE_FORMAT( s_date, "%Y-%m" ) AS ym,
      SUM( amount ) AS amount,
      SUM( gmv ) AS gmv 
    FROM
      orders
    GROUP BY
      product,ym
    ORDER BY
      product,ym)
  SELECT
    product,ym,amount,gmv,
    FIRST_VALUE(amount) OVER(PARTITION BY product ORDER BY ym) AS first_amount,
    ROW_NUMBER() OVER(PARTITION BY product ORDER BY ym) as rn
  FROM
    cte)
SELECT
  product,ym,amount,first_amount,rn,
  CONCAT(ROUND((POWER(1.0*amount/first_amount, 1.0/NULLIF(rn-1,0))-1) * 100,2),"%") AS "月均复合增长率"
FROM
  cte2

到此,我们几种对比的方式已经都实现了,都是使用月的维度进行演示的,使用日、周、年维度都是相同的思路,只要把顺序排列好就行了。

扫描二维码推送至手机访问。

版权声明:本文由阿龙玩站网发布,如需转载请注明出处。

本文链接:https://www.longge2021.cn/zhideyikan/25063.html

分享给朋友:

“今日知识分享年均增速怎么计算” 的相关文章

wapi打开好还是不打开(启用wapi是干什么用的)

wapi打开好还是不打开(启用wapi是干什么用的)

如果您购买的 iPhone 是国行版,打开“设置”-“无线局域网”,下拉界面就能够看到“启用 WAPI”选项。 该选项是什么意思呢? WAPI 的中文名是:无线局域网鉴别和保密基础结构。WAPI 既是安全协议,也是中国无线局域网安全强制性标准,目前全球无线局域网领域行业有两...

淘宝流量提升(如何让淘宝店铺有流量)

淘宝流量提升(如何让淘宝店铺有流量)

我们都知道,流量是电商的命脉,没有流量的淘宝店铺就相当于没有人流的超市。产品再多,也无人购买,也更没有销售额的产生。正是因为如此,流量是我们卖家一直所追求的,只有有了流量我们的店铺 我们都知道,流量是电商的命脉,没有流量的淘宝店铺就相当于没有人流的超市。产品再多,也无人购买,也更没有销售额的产生。...

快手卖货平台怎么收费(快手小店卖一单扣多少钱)

快手卖货平台怎么收费(快手小店卖一单扣多少钱)

快手和抖音是现在发展的比较好的短视频平台,越来越多的商家们开始利用这些平台达到带货的目的,也有很多的达人愿意利用自己的名气来接广告获取佣金,快手直播带货平台怎么收费?一、快手直播带 快手和抖音是现在发展的比较好的短视频平台,越来越多的商家们开始利用这些平台达到带货的目的,也有很多的达人愿意利用自己...

如何才能做好电商营销方案(做电商营销方案从以下2个方面入手)

如何才能做好电商营销方案(做电商营销方案从以下2个方面入手)

电商业内人都知道,现在平台方是“大甲方“,因为他们手里握有让品牌方趋之若鹜的流量资源包。这也就是为什么现在的品牌方会争相去PK上面说的这些超级品牌日、欢聚日活动,因为这些IP活动都 电商业内人都知道,现在平台方是“大甲方“,因为他们手里握有让品牌方趋之若鹜的流量资源包。这也就是为什么现在的品牌方会...

兰花几月开花哪个季节(兰花用什么肥料最好)

兰花几月开花哪个季节(兰花用什么肥料最好)

养兰花,3种肥交替使用,长势旺盛、叶子浓绿在养兰花的过程中,经常会有花友在给兰花施肥问题上遇到困扰,不知道该给兰花施什么肥,又该如何去合理的施肥。兰花长得旺盛,叶色浓绿,正常开花,才具观赏价值,这就需要平时做到合理的水肥 养兰花,3种肥交替使用,长势旺盛、叶子浓绿 在养兰花的过程中,经常会有花友...

南航飞机座位选择哪个位置好(飞机31到55排哪个位置好)

南航飞机座位选择哪个位置好(飞机31到55排哪个位置好)

费尽千辛万苦,好不容易买到心仪的机票,结果座位没选好,整个人的心情瞬间down掉,如何能把经济舱坐出头等舱的姿态?▲经济舱前排及紧急出口排座位最佳就排号来说,一般第1-10行的座位为头等舱、第11-30行是商务舱、第31 费尽千辛万苦,好不容易买到心仪的机票,结果座位没选好,整个人的心情瞬间dow...

2022年寒衣节的禁忌可信吗(寒衣节不宜做什么)

2022年寒衣节的禁忌可信吗(寒衣节不宜做什么)

十月初一送寒衣是很多北方地区都有的习俗,但由于该节日作为四大鬼节之一,所以很多讲究都会出现在我们生活中,那么2022年寒衣节的禁忌可信吗成了很多人都有的疑问,下面小编就和大家一起看看。2022年寒衣节的禁忌可信吗见仁见智 十月初一送寒衣是很多北方地区都有的习俗,但由于该节日作为四大鬼节之一,所以很...

农历十月初一是阳历的哪一天(十月初一节日什么意义)

农历十月初一是阳历的哪一天(十月初一节日什么意义)

寒衣节是很多北方地区都有的风俗习惯,但由于该节日并不是按照阳历来讲的而是按照阴历,所以农历十月初一是阳历的哪一天成了很多人都好奇的,下面小编就和大家一起看看十月初一节日什么意义。农历十月初一是阳历的哪一天农历十月初一是1 寒衣节是很多北方地区都有的风俗习惯,但由于该节日并不是按照阳历来讲的而是按照...

2022冬至之后是不是一天比一天长(冬至之后是不是昼长夜短)

2022冬至之后是不是一天比一天长(冬至之后是不是昼长夜短)

冬至是二十四节气中的第22个节气,个节气,但由于每每冬至后后昼夜长短都会出现变化,所以每当冬至来临之际,大家常常好奇春2022冬至之后是不是一天比一天长,下面就和大家一起看看冬至之后是不是昼长夜短。2022冬至之后是不是 冬至是二十四节气中的第22个节气,个节气,但由于每每冬至后后昼夜长短都会出现...

分手后想复合要不要联系(挽回死心前男友正确方法)

分手后想复合要不要联系(挽回死心前男友正确方法)

对于分手后还想复合的心理是完全可以理解的,无非两种原因,一是依旧喜欢,二是找不到比前任更好的对象。当你分手后想复合首先考虑下你们是因为什么分的手,你是分手方还是被分手方,这个区别还是很大的。分手后想复合要不要联系如果你真 对于分手后还想复合的心理是完全可以理解的,无非两种原因,一是依旧喜欢,二是找...

红薯和螃蟹可以一起吃吗(吃了红薯可以吃螃蟹吗)

红薯和螃蟹可以一起吃吗(吃了红薯可以吃螃蟹吗)

板栗是生活中比较常见的一种食物,它吃起来粉粉糯糯的,含有多种营养成分,适量食用对身体有一定好处。板栗一般要吃熟的,不建议吃生的,半生半熟的板栗也可以吃,但是不容易消化,可能会引起肠胃不适。红薯和螃蟹可以一起吃吗红薯和螃蟹 板栗是生活中比较常见的一种食物,它吃起来粉粉糯糯的,含有多种营养成分,适量食...

电解质水是不是智商税?(电解质水可以长期喝吗)

电解质水是不是智商税?(电解质水可以长期喝吗)

电解质水可以长期喝吗 电解质水是不是智商税? 各大电商平台爆发式销售,一瓶健身教练,社交平台策略笔记铺天盖地..电解质这一概念,早已风靡全网,相关产品的销量也随之上升。 根据2022年电解质饮料趋势报告,电解质饮料已成为饮用水轨道的新出风口,销量同比增长225%,超过能量饮料...

奥粒绒面料洗完缩水正常吗(奥粒绒面料会不会缩水)

奥粒绒面料洗完缩水正常吗(奥粒绒面料会不会缩水)

奥粒绒作为时下较为火热的面料之一,想必大家再逛直播间和小红书的时候都有它的推荐,但很多人在清洗该面料的衣物的时候却遇到有轻微缩水的问题,下面小编就和大家一起看看奥粒绒面料洗完缩水正常吗。奥粒绒面料洗完缩水正常吗奥粒绒面料 奥粒绒作为时下较为火热的面料之一,想必大家再逛直播间和小红书的时候都有它的推...

剥好了的茭白怎么保存才新鲜(茭白剥皮后怎么保存时间长些)

剥好了的茭白怎么保存才新鲜(茭白剥皮后怎么保存时间长些)

茭白是生活中比较常见的一种食物,它的吃法比较多,大多数人都是炒着吃的,味道都很不错。茭白吃之前一般都是需要剥皮的,剥皮之后的茭白要尽快吃掉,不然容易氧化变黄变黑的,剥好的茭白可以放冰箱冷藏,这样可以放得久一点。剥好了的茭 茭白是生活中比较常见的一种食物,它的吃法比较多,大多数人都是炒着吃的,味道都...

能贷30年绝不贷20年为什么(30年房贷提前几年还清最划算)

能贷30年绝不贷20年为什么(30年房贷提前几年还清最划算)

能贷30年绝不贷20年的原因主要是因为利率比较低,这种贷款相对于来说比较划算,对于月供压力也会小很多。那么,30年房贷提前几年还清最划算呢?让我们一起来看看久久派带来的详细介绍吧!能贷30年绝不贷20年为什么能贷30年绝 能贷30年绝不贷20年的原因主要是因为利率比较低,这种贷款相对于来说比较划算...