zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mysql计算增长率

2023-03-20 14:40:59 时间

好久没更新了,最近实在是太忙了,基本上天天和sql打交道。恰巧今天遇到了一个问题,在这里和大家分享一下,就是使用sql计算增长率的问题。

我数据库中的原始数据是这样的:

year

value

2016

200

2017

160

2018

230

2019

100

2020

250

但是我们前端需要展现的是一条折现,显示的是增长率,或者叫同比增长, 这个大家应该都知道吧,公式如下: (后一年数据 - 前一年数据) / 前一年的数据。 这个一开始确实难住了我,后来在网上找到了解决方案,理解过后感觉甚是经典,也分享给大家。

我们还是先来研究下公式, 我们假设今年的数据是 t1. 去年的数据是t2, 那么增长率为 (t1 - t2)/ t2 , 通过分解等价于 t1/t2 -1 ,这应该比较好理解吧。那么我们既然要用sql去实现他,当务之急,即使如何在我们的sql中获取今年和去年的数据,如果能够获得,我们我们就可以直接套用上面的公式即可。

我们怎么获取相邻两个年份的数据呢,其实我们我们可以用两张相同相同的表想关联,只不过让他们的关联条件不是我们常用的相等,而是进行错位关联。 说的比较抽象,我们直接看sql, 假设表名test ,年份字段year,值字段名value. sql如下:

select * from test t1 left join test t2 on t1.year = t2.year+1

我们通过一个left join关联相同的表,要注意条件是 t1.year = t2.year+1 , 这就是我们所说的错位关联。当t1.year=2018年是, t2.year就是2017年,这样t1和t2就代表了两个相邻年份的数据,有了两个相邻年份,我们就可以计算增长率了。

select t1.year, t1.value/t2.value-1 rate from 
test t1 left join test t2 on t1.year = t2.year +1
order by t1.year 

这就是计算增长率的方式。怎么样,你学会了么。

好了,如果对你有帮助,就给点个赞吧!