SQL求同比增長率(系列1)

2021-10-03 04:16:30 字數 2148 閱讀 8616

假設現在有下方這兩張表(sales和dim_date),我們需要通過它們計算銷售額同比增長率。

第一張表是 sales(銷售表),記錄日期和日期對應的銷售額;

第二張表是dim_date(日期維表),記錄日期對應的可比日期(這裡是去年同月同天)。

口徑如下:

當 日銷

售額同比

增長率=

當日銷售

額−去年

同月同天

銷售額去

年同月同

天銷售額

∗100

%當日銷售額同比增長率=\frac *100\%

當日銷售額同

比增長率

=去年同

月同天銷

售額當日

銷售額−

去年同月

同天銷售

額​∗100%

那麼我們該怎麼寫 sql 來計算這個同比增長率呢?

計算邏輯:

先用銷售表關聯日期維表,獲得每天的可比日期(如2020-01-03的可比日期為2019-01-03),再用上述結果表關聯銷售表,得到可別日期對應的銷售額;

根據統計口徑可直接求得。

2.1 mysql實戰

2.1.1 資料匯入

-- ddl: sales

drop

table

ifexists 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

Oracle 環比增長率

首先,了解什麼是 環比增長率?環比增長率 本期數 上期數 上期數 100 如 2014年2月的工資為 5000,2014年1月的工資為4000,則2月份的環比增長率為 5000 4000 4000 100 25 那麼,oracle中的sql語句怎麼寫呢?舉個例子 1.建表 create table ...

黨報刊文析經濟走勢 今年GDP增長率將在10 左右

物價 與我國經濟結構性矛盾的關係 這一輪物價 的深層原因還在於,我國經濟在持續5年10 以上的高速增長中積累了一些結構性矛盾,其突出表現是兩個失衡,即國內儲蓄 投資與消費失衡以及內需與外需失衡,經濟增長在需求上過多地依賴投資和出口,在產業上過多地依賴工業尤其是重化工業。2003年至2007年,全社會...

蘑菇街雙十一「直播狂歡」直播GMV同比增長155

11 月 13 日,蘑菇街對外公布了今年雙十一 直播狂歡節 的戰績 2019 年 11 月 1 日 12 日期間,蘑菇街全品類直播gmv同比去年增長155 包括美妝 等核心類目直播gmv均呈三位程式設計客棧數增長態勢,其中美妝 家居等漲幅超200 醫美健康漲幅超1000 今年,蘑菇街重點強調了直播在...