[英]Hive/SQL How do you access the value of the column which you just computed for previous rows?
它基本上是一個user log in table
,顯示按 user_id 分區的累積登錄天數。 並且該列pre
顯示用戶登錄記錄的最后登錄日期。
基於此我想計算每個用戶記錄的連續登錄天數。
last consecutive login days
數值。該代碼將是:
SELECT *,
if(pre = date_add(uv_date, -1), last(consecutive_days) + 1, 1) consecutive_days
FROM uv_user_date
有什么辦法可以得到last(consecutive_days)
的值
首先找出日期差異
tbl1:
select *,
if(pre = NULL, 1, datediff(uv_date, pre)) as diff
from your_table
那么每個user_id的累積差異和accumulative_uv_date之間的差異,你想用它作為排名
tbl2:
select *,
sum(diff) over (partition by user_id order by uv_date rows between unbounded preceding and current) - accumulative_uv_date as rnk
from tbl1
最后,計算連續的天數
select user_id, uv_date, rnk
row_number() over (partition by user_id, rnk order by uv_date) as consecutive_days
from tbl2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.