大数据-Hive练习-环比增长率、同比增长率、复合增长率

目录

[🥙12.1 环比增长率](#🥙12.1 环比增长率)

[1. 概述](#1. 概述)

[2. 公式](#2. 公式)

[3. 示例](#3. 示例)

4.练习-需求:计算各类商品的月环比增长率

[🥙12.2 同比增长率](#🥙12.2 同比增长率)

[1. 概述](#1. 概述)

[2. 公式](#2. 公式)

[3. 示例](#3. 示例)

[4. 练习-需求:计算各类商品的月同比增长率](#4. 练习-需求:计算各类商品的月同比增长率)

[🥙12.3 复合增长率](#🥙12.3 复合增长率)

[1. 概述](#1. 概述)

[2. 公式](#2. 公式)

[3. 示例](#3. 示例)

[4. 练习-需求:计算各类商品的月同比增长率](#4. 练习-需求:计算各类商品的月同比增长率)


练习数据表

sql 复制代码
-- 创建销量表sales_monthly
-- product表示产品名称,ym表示年月,amount表示销售金额(元)
CREATE TABLE sales_monthly(product string,
                           ym string,
                           amount decimal(10, 2))
row format delimited fields terminated by ",";

-- 生成测试数据
load data local inpath '/opt/testDemo/sales.txt' into table sales_monthly;

sales.txt

html 复制代码
苹果,201801,10159.00
苹果,201802,10211.00
苹果,201803,10247.00
苹果,201804,10376.00
苹果,201805,10400.00
苹果,201806,10565.00
苹果,201807,10613.00
苹果,201808,10696.00
苹果,201809,10751.00
苹果,201810,10842.00
苹果,201811,10900.00
苹果,201812,10972.00
苹果,201901,11155.00
苹果,201902,11202.00
苹果,201903,11260.00
苹果,201904,11341.00
苹果,201905,11459.00
苹果,201906,11560.00
香蕉,201801,10138.00
香蕉,201802,10194.00
香蕉,201803,10328.00
香蕉,201804,10322.00
香蕉,201805,10481.00
香蕉,201806,10502.00
香蕉,201807,10589.00
香蕉,201808,10681.00
香蕉,201809,10798.00
香蕉,201810,10829.00
香蕉,201811,10913.00
香蕉,201812,11056.00
香蕉,201901,11161.00
香蕉,201902,11173.00
香蕉,201903,11288.00
香蕉,201904,11408.00
香蕉,201905,11469.00
香蕉,201906,11528.00
桔子,201801,10154.00
桔子,201802,10183.00
桔子,201803,10245.00
桔子,201804,10325.00
桔子,201805,10465.00
桔子,201806,10505.00
桔子,201807,10578.00
桔子,201808,10680.00
桔子,201809,10788.00
桔子,201810,10838.00
桔子,201811,10942.00
桔子,201812,10988.00
桔子,201901,11099.00
桔子,201902,11181.00
桔子,201903,11302.00
桔子,201904,11327.00
桔子,201905,11423.00
桔子,201906,11524.00

🥙12.1 环比增长率

1. 概述

环比增长率是指两个相邻时段之间某种指标的增长率。通常来说,环比增长率是比较两个连续时间段内某项数据的增长量大小的百分比

环比增长率反映了两个相邻时间段内某种经济指标的变化速度,被广泛用于企业、社会和国民经济等方面的经济分析中。

2. 公式

环比增长率的计算公式如下:

环比增长率 = (本期数值 - 上期数值)/ 上期数值 * 100%

其中:

  • 本期数值是指当前时间段内的指标数值;

  • 上期数值是指上一个时间段内的指标数值。

3. 示例

通过计算两者之间的差异,再以百分比的形式表示出来,就得到了环比增长率。

例如,如果某公司今年第一季度的销售额为 100 万人民币,第二季度的销售额为 120 万人民币,那么环比增长率可以按照以下步骤计算:

环比增长率 = (120 - 100) / 100 * 100% = 20%

这样就得到了该指标在本期相对于上期的增长率为 20%。

4.练习-需求:计算各类商品的月环比增长率

sql 复制代码
--需求说明:计算各类商品的月环比增长率;
select product as `产品`,
       ym as `年月`,
       (amount-lag(amount,1) over (partition by product order by ym))/lag(amount,1,amount) over (partition by product order by ym) *100 as `环比增长率%`
from sales_monthly;

🥙12.2 同比增长率

1. 概述

同比增长率是指与去年同期相比的增长率。它用于比较同一时间段内的两个不同年份的数据变化情况,判断增长趋势和比较不同年度的表现。常用于分析经济、市场等领域的年度变化趋势。

2. 公式

同比增长率的计算公式如下:

同比增长率 = (本期数值 - 去年同期数值)/ 去年同期数值 * 100%

其中:

  • 本期数值是指当前时间段内的指标数值;

  • 去年同期数值是指上一个年度同一时间段内的指标数值。

通过计算两者之间的差异,再以百分比的形式表示出来,就得到了同比增长率。

3. 示例

举例来说,如果某项指标在今年第一季度120,而去年同期第一季度100,那么同比增长率可以按照以下步骤计算:

同比增长率 = (120 - 100) / 100 * 100% = 20%

这样就得到了该指标在今年第一季度相对于去年同期的增长率为 20%

4. 练习-需求:计算各类商品的月同比增长率

sql 复制代码
select s1.`产品`,s1.`今年日期`,s1.`本年销量`,s2.amount as `去年销量`,
       (s1.`本年销量`-s2.amount)/s2.amount *100 as `同比增长率(%)`
from (
select product as `产品`,
       ym as `今年日期`,
       amount as `本年销量`,
       concat(cast(substr(ym,1,4) as int)-1,substr(ym,5)) as last_year
from sales_monthly
order by product,ym) as s1
left join sales_monthly as s2
on s1.last_year=s2.ym and s1.`产品`=s2.product;

🥙 12.3 复合增长率

1. 概述

复合增长率是指在一段连续的时间内,某项指标每个月或年平均增长的复合增长率。它用于衡量某指标在一段时间内(月均或年均)的整体增长速度。

2. 公式

复合增长率的计算公式如下:

复合增长率 = (最终值 / 初始值)^( 1 / n) - 1

其中:

  • 最终值是指期末的数值;

  • 初始值是指起始的数值;

  • n 时间段数量 是指经过 n 个时间段的增长所到达的值。

在hive中通过power((最终值 / 初始值), 1 / n)-1来进行计算

3. 示例

举例来说,假设某项指标在起始时刻(一月份)为 100,经过 6 个月(到达七月份)的增长,最终值为 200,则可以按照以下步骤计算月均复合增长率:

月均复合增长率 = ( (200 / 100)^(1 / (7-1)) -1) * 100%

这样就得到了某指标经过 6 个月的整体增长率(复合增长率) 为12.25%。

sql 复制代码
select (power(200/100,1/6)-1)*100 as `增长率`;

结果:

在计算月均或年均复合增长率时,需要使用连续的起始值和结束值来进行计算。假设有 n 个连续的月份数据,那么起始值到结束值的时间跨度为 n-1 个月,只计算后续的增长情况。

4. 练习**-需求:计算各类商品的月同比增长率**

sql 复制代码
--1. 先求出每个产品的第一个月的销量,并对这个排序做个计数
select product,
       ym,
       amount,
       first_value(amount) over (partition by product order by amount) as first_value,
       row_number() over (partition by product order by amount) as num
from sales_monthly;

--2.num-1即为公式中的时间段,要考虑num-1=0的情况
select product as `产品`,
       ym as `年月`,
       amount as `销量`,
       first_value as `起始销量`,
       (power(1.0*amount/first_value,1.0/NULLIF(num-1,0))-1)*100 as `复合增长率`
from(
select product,
       ym,
       amount,
       first_value(amount) over (partition by product order by amount) as first_value,
       row_number() over (partition by product order by amount) as num
from sales_monthly);

结果:

相关推荐
大数据追光猿1 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
人类群星闪耀时3 小时前
物联网与大数据:揭秘万物互联的新纪元
大数据·物联网·struts
桃林春风一杯酒9 小时前
HADOOP_HOME and hadoop.home.dir are unset.
大数据·hadoop·分布式
桃木山人9 小时前
BigData File Viewer报错
大数据·java-ee·github·bigdata
B站计算机毕业设计超人9 小时前
计算机毕业设计Python+DeepSeek-R1高考推荐系统 高考分数线预测 大数据毕设(源码+LW文档+PPT+讲解)
大数据·python·机器学习·网络爬虫·课程设计·数据可视化·推荐算法
数造科技10 小时前
紧随“可信数据空间”政策风潮,数造科技正式加入开放数据空间联盟
大数据·人工智能·科技·安全·敏捷开发
逸Y 仙X13 小时前
Git常见命令--助力开发
java·大数据·git·java-ee·github·idea
caihuayuan413 小时前
PHP建立MySQL持久化连接(长连接)及mysql与mysqli扩展的区别
java·大数据·sql·spring
B站计算机毕业设计超人14 小时前
计算机毕业设计Hadoop+Spark+DeepSeek-R1大模型民宿推荐系统 hive民宿可视化 民宿爬虫 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hadoop·爬虫·机器学习·课程设计·数据可视化·推荐算法
(; ̄ェ ̄)。14 小时前
在nodejs中使用ElasticSearch(二)核心概念,应用
大数据·elasticsearch·搜索引擎