快捷搜索:  汽车  科技

mysql求增长率,mysql计算增长率

mysql求增长率,mysql计算增长率201820020161002017

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

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

year

value

2016

100

2017

200

2018

160

2019

180

2020

200

2021

240

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

我们还是先来研究下公式吧, 我们假设今年的数据是 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

mysql求增长率,mysql计算增长率(1)

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

猜您喜欢: