1. 首页
  2. 综合百科
  3. 均增速怎么计算(增长率的计算公式例子)

均增速怎么计算(增长率的计算公式例子)

简介:关于均增速怎么计算(增长率的计算公式例子)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

今天延续MySQL的问题也是一个常见的问题,就是计算同比和环比的问题,然后在这个思路的基础上计算一个复合增长率。在MySQL8.0之前,同比对比的思路是通过LEFT JOIN找到上一期的数据,然后进行计算。MySQL8.0以后,计算方法就很简单了,用窗口函数就可以轻松解决,所以今天我们就来介绍一下窗口函数的求解。

首先是数据的准备。数据如下。我们准备了2020-2022年三款产品的日常交易数据,这里只留下最关键的字段。

环比和同比一般是按月计算的,所以第一步是把数据转换成月度数据。在这里,我们只需要使用最基本的SQL操作,GROUP BY即可。SQL语句和结果如下所示

SELECT product,DATE_FORMAT(s_date,' %Y-%m ')作为ym,SUM(amount)作为amount,SUM(gmv)作为gmv FROM orders GROUP BY product,ym

这样我们就得到每个产品的每月金额和数量,我们在这里按产品和月份排序。然后先计算环比,我们以量为例。金额是一样的。其思路是,我们需要找出当月上月的销售数量,利用window函数的LAG函数进行抵消。可以得到上个月的金额,然后需要按产品分组,也就是OVER中的PARTION BY product,然后可以通过环比的公式计算出来。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),

下面简单介绍一下,同比和环比的公式

环比 = (本月值 上月值)/上月值,或者 本月值/上月值-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)

最后一个巩固练习,用窗函数计算复合增长率。先介绍复合增长率的公式,就是用当期的数据除以第一期的数据,然后按区间求根,再减一。公式如下

Cagr=(结束值/开始值)(1/n)-1所以我们需要计算两个值,第一个是第一期的值,第二个是区间数。这两个值都由窗口函数计算,FIRST_VALUE用于第一阶段,ROW_NUMBER用于间隔。最后用上面我们公司可以算出复合增长率。SQL语句和结果如下

WITH cte 2 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 BY ym)AS first_amount,ROW _ NUMBER()OVER(PARTITION BY product ORDER BY ym)AS rn FROM cte)SELECT product,ym,amount,amount,FIRST _ amount,

至此,我们实现了几种比较的方式,都是用月的维度来论证,用日、周、年的维度也是同样的思路,只要排列顺序。

本文主要介绍了关于均增速怎么计算(增长率的计算公式例子)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://seotea.com/article/729457.html