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

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

year value
2016 100
2017 200
2018 140
2019 300
2020 150
2021 180

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

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

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

(csdn不知道怎么了,没法传图片了,等到恢复的时候,再给大家截图吧。。。)

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

mysql计算增长率相关推荐

  1. mysql 计算排名,生成排行榜

    mysql计算排名,获取行号rowno 学生成绩表数据 SELECT * FROM table_score ORDER BY score DESC; 获取某个学生成绩排名并计算该学生和上一名学生成绩差 ...

  2. mysql计算1000天后的日期_mysql,数据库_mysql 计算某个时间,多少天后,多少个月后时间戳,mysql,数据库,数据库设计 - phpStudy...

    mysql 计算某个时间,多少天后,多少个月后时间戳 id start_time period_ytpe period_value 1 1461427200 day 3 2 1461427200 mo ...

  3. mysql 计算gps坐标距离_mysql、sqlserver和php计算GPS经纬度坐标距离

    摘要:mysql.sqlserver.oracle和php计算GPS经纬度坐标距离 mysql计算GPS经纬度距离DELIMITER $$ CREATEDEFINER=`root`@`localhos ...

  4. mysql计算相邻的差值_MySQL如何计算相邻两行某列差值

    MySQL计算相邻两行某列差值的方法:首先通过[r1.rownum = r2.rownum - 1]来判断两条记录是否是前后行:然后再使用TIMEDIFF函数来计算时间差即可. [相关学习推荐:mys ...

  5. 使用MySql计算两个日期的时间差函数:TIMESTAMPDIFF

    MySql计算两个日期的时间差函数TIMESTAMPDIFF用法 TIMESTAMPDIFF计算两个日期差值,可定义时间单位 DATEDIFF 计算两个日期差,以天为单位 TIMDIFF 时间比较,直 ...

  6. mysql 计算自然周

    mysql 计算自然周距离现在多少周的方法 set @install = '2020-10-24 18:00:00'; select @install, date_format(@install - ...

  7. MySql计算两个日期的时间差函数

    MySql计算两个日期时间的差函数: 第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. ...

  8. 【内附独家PPT】CynosDB for MySQL 计算存储分离架构的实现和优化

    3月16日,由腾讯云云+社区主办的腾讯云自研数据库 CynosDB 交流会在北京圆满落幕,本次交流会全方位解读了CynosDB,揭秘技术内幕,解读兼容两大主流开源数据库的一主多读架构.高可用架构及快速 ...

  9. mysql计算两个月份之间的差值_MySQL计算两个日期相差的天数、月数、年数

    MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...

  10. mysql计算时间差函数 和 四舍五入 2021-10-20

    mysql计算时间差函数 和 四舍五入 mysql计算时间差函数 四舍五入 mysql计算时间差函数 提示:以下是本篇文章正文内容,下面案例可供参考 mysql数据中计算时间差函数 MySql计算两个 ...

最新文章

  1. 数字图像处理- 3.4 空间滤波 and 3.5 平滑空间滤波器
  2. Hey!你的 CSDN 年度报告已出炉,请查收~
  3. 计算机连接外设的端口驱动,将 KMDF 外设驱动程序连接到串行端口
  4. JS Range 对象的使用
  5. JS 处理Json 时间带T 时间格式
  6. 多文档版的的正则表达式工具
  7. 《史无前例!编程语言python斩获最有发展第一与排行榜第三!》深入 Python 流程控制
  8. linux下部署node+vue文件
  9. 管理感悟:看清软件功能的“二八定律”
  10. 小程序场景二维码扫码
  11. java中dao_java中的Dao类是什么意思?
  12. oracle报1653解决办法,ORA-1653的问题
  13. 新浪微博单点登陆分析
  14. AI 隐身术,能让物体在视频中消失的魔法
  15. 我爱大自然教案计算机,我们热爱大自然教案.doc
  16. git学习——上传项目代码到github
  17. OCA/OCP Oracle 数据库12c考试指南读书笔记:第27章: Duplicating a Database
  18. Java 8 stream学习
  19. 计算机修复无法启动怎么还原,电脑无法开机时如何恢复系统?
  20. 电力电子技术简答题总结

热门文章

  1. ecu故障现象_发动机各传感器故障现象总结
  2. 计算机毕业设计Spark+SpringBoot旅游推荐系统 旅游大数据分析大屏 旅游可视化 旅游路线规划系统 旅游推荐App小程序 旅游网站 自驾游路线规划系统 自驾游推荐系统 自驾游推荐App小程序
  3. 阿里云服务器怎么配置安全组?
  4. 图像处理:理想低通滤波器、butterworth滤波器(巴特沃斯)、高斯滤波器实现(python)
  5. 西电2019计算机等级考试,西安电子科技大学2019《计算方法》期末考试试题
  6. Ubuntu安装过程之磁盘分区图文教程
  7. 如何在Windows命令行窗口复制和粘贴?
  8. 面试官问你“有什么问题问我吗?”,你该如何回答? 1
  9. 图形化硬件编程 ——数码管时钟——之米思齐篇
  10. 安科瑞【节能学院】电气火灾监控系统在太焦铁路博爱站房项目的应用