查看原文
其他

Hive计算绝对值同环比

HeartisTiger 数据仓库与Python大数据 2022-07-01

公众号推文规则变了,点击上方 "蓝色"关注, 设为星

后台回复【加群】,申请加入数仓中台交流群


目录

  1. 什么是绝对值同比

  2. 什么是绝对值环比

  3. 数据集准备

  4. 同比计算

  5. 环比计算


什么是绝对值同比

本期数据-同期数据/|同期数据|
例: 2021年1月1日的gmv -2020年1月1日的gmv/|2020年1月1日的gmv|

什么是绝对值环比

本期数据-上期数据/|上期数据|
例: 2021年2月2日的gmv -2020年2月1日的gmv/|2020年2月1日的gmv|

数据集准备

建表语句

create table new_table(dt string,area string,province string,saleroom int);

数据准备

insert into new_table values('2017-12-01', 'hd', 'sh','3600000');insert into new_table values('2017-12-02', 'hd', 'js','2800000');insert into new_table values('2017-12-03', 'hd', 'zj','4500000');insert into new_table values('2017-12-04', 'hb', 'bj','3000000');insert into new_table values('2017-12-05', 'hb', 'tj','2800000');insert into new_table values('2018-12-01', 'hd', 'sh','3000000');insert into new_table values('2018-12-02', 'hd', 'js','2000000');insert into new_table values('2018-12-03', 'hd', 'zj','2500000');insert into new_table values('2018-12-04', 'hb', 'bj','2600000');insert into new_table values('2018-12-05', 'hb', 'tj','1500000');

同比计算

with tmp as (select dt,area,province,saleroom,lag(saleroom,1,0) over(partition by concat(month(dt),"-",day(dt)),area,province order by dt asc) pre_salefrom new_table)select dt,area,province,saleroom,pre_sale,if(round((saleroom-pre_sale)/abs(pre_sale)*1.00,2) is null,100,round((saleroom-pre_sale)/abs(pre_sale)*1.00,2)*100) from tmp;12

环比计算

with tmp as (select dt,area,province,saleroom,lag(saleroom,1,0) over(partition by concat(month(dt),"-",day(dt)),area,province order by dt asc) pre_salefrom new_table)select dt,area,province,saleroom,pre_sale,if(round((saleroom-pre_sale)/abs(pre_sale)*1.00,2) is null,100,round((saleroom-pre_sale)/abs(pre_sale)*1.00,2)*100) from tmp ;


下载资料:长按扫码回复 Hive



希望这篇文章可以帮到你~
欢迎大家点个在看,分享至朋友圈

人间真爱,在看在看在看~(疯狂暗示!)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存