[英]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.