用優雅的辦法實現hive中求同比環比


一般在hive中求同比環比都需要表自關聯,其實還有一種更優雅的辦法。

hive中有個lag函數,正好可以用於求同比環比,不過要求數據比較完整

LAG(col,n,DEFAULT) 用於統計窗口內往上第n行值

第一個參數為列名,
第二個參數為往上第n行(可選,默認為1),
第三個參數為默認值(當往上第n行為NULL時候,取默認值,如不指定,則為NULL)

num1即為上個月的值,num2即為12個月之前的值

select year_id,month_id,num,
lag(num,1,0) over (order by year_id,month_id) num1,
lag(num,12,0) over (order by year_id,month_id) num2,
num/(lag(num,1,0) over (order by year_id,month_id))-1 as num3,
num/(lag(num,12,0) over (order by year_id,month_id))-1 as num4
from 
(select year_id,
month_id,
count(distinct prem_id) as num
from cisadm_dwd.dwd_cis_wo_repair_di
group by year_id,month_id
order by  year_id,month_id)a

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM