我正在计算逐年变化,下面是Hive中的查询
select Name,
Year,
Month,
ID,
value as Current,
LAG(value,1,0) OVER(PARTITION BY name,month,id ORDER BY year ASC) as Previous,
value - LAG(value,1,0) OVER(PARTITION BY name,month,id ORDER BY year ASC) as Change
当前结果
Name Year Month ID Current Previous Change
A 2015 1 8320 944 0 944
O 2015 1 8320 153 0 153
O 2016 1 8320 133.92 153 -19.08
B 2015 1 8320 572 0 572
C 2016 1 8320 126 0 126
2016年有3起案件
名字o-有2016年和2015年的两个值,我得到了不同的值
名称c-仅在2016年有值,我将2015年的差值保持为0
名称a和b-只有2015年才有值,而不是2016年-所以我需要得到两个条目,a和b的更改分别为-944和-572。
我的预期结果是:
Name Year Month ID Current Previous Change
A 2015 1 8320 944 0 944
A 2016 1 8320 0 944 -944
O 2015 1 8320 153 0 153
O 2016 1 8320 133.92 153 -19.08
B 2015 1 8320 572 0 572
B 2016 1 8320 0 572 -572
C 2016 1 8320 126 0 126
请指导我如何获取上一年的值,即使没有本年的值。提前感谢您的帮助。
暂无答案!
目前还没有任何答案,快来回答吧!