SQL求同比增长率
2021/12/7 2:21:35
本文主要是介绍SQL求同比增长率,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、业务背景及口径说明
假设现在有下方这两张表(sales和dim_date),我们需要通过它们计算销售额同比增长率。
第一张表是 sales(销售表),记录日期和日期对应的销售额;
第二张表是dim_date(日期维表),记录日期对应的可比日期(这里是去年同月同天)。
公式如下:
当日销售额同比增长率=(当日销售额 - 去年同月同天销售额) / 去年同月同天销售额* 100
那么我们该怎么写 sql 来计算这个同比增长率呢?
二、计算逻辑
计算逻辑:
- 先用销售表关联日期维表,获得每天的可比日期(如2020-01-03的可比日期为2019-01-03),再用上述结果表关联销售表,得到可别日期对应的销售额;
- 根据统计口径可直接求得。
2.1 MySQL实战
2.1.1 数据导入
-- DDL: sales drop table if exists test.sales; create table test.sales ( report_date date comment '日期' , sales_amt double comment '销售额' ) engine=innodb default charset=utf8 ; -- Insert Data insert into test.sales( report_date , sales_amt ) values('2020-01-03', '1000') , ('2020-01-02', '800') , ('2019-01-03', '900') , ('2019-01-02', '1100') ; -- DDL: dim_date create table test.dim_date ( report_date date comment '日期' , date_yoy date comment '去年同月同天' ) engine=innodb default charset=utf8 ; -- Insert Data insert into test.dim_date( report_date , date_yoy ) values('2020-01-03', '2019-01-03') , ('2020-01-02', '2019-01-02') ;
2.1.1 计算逻辑实现
select a.report_date , 100* (a.sales_amt - c.sales_amt) / c.sales_amt '可比增长率' from test.sales a left join test.dim_date b on a.report_date = b.report_date left join test.sales c on b.date_yoy = c.report_date
这篇关于SQL求同比增长率的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南