SQL查询查找每个用户的活动时间
Posted
技术标签:
【中文标题】SQL查询查找每个用户的活动时间【英文标题】:SQL Query to find the activity time of each user 【发布时间】:2020-09-12 12:43:28 【问题描述】:我们如何使用这些数据来计算每个用户在每个时期的活动?
user_id date status
101 2018-01-1 1
101 2018-01-2 0
101 2018-01-3 1
101 2018-01-4 1
101 2018-01-5 1
输出:
user_id start_date end_date status length
101 2018-01-1 2018-01-1 1 1
101 2018-01-2 2018-01-2 0 1
101 2018-01-3 2018-01-5 1 3
【问题讨论】:
【参考方案1】:这是一个孤岛问题。您可以通过减去一个序列将它们组合在一起:
select user_id, status, min(date), max(date),
julianday(max(date)) - julianday(min(date)) as length
from (select t.*,
row_number() over (partition by user_id, status order by date) as seqnum
from t
) t
group by user_id, status, date(date, '-' || seqnum || ' day')
order by user_id, length;
Here 是一个 dbfiddle。
【讨论】:
非常感谢,但是如何在 max(date) 和 length 之间添加状态并将 min(date) 重命名为 start_date?? @alirezana 。 . .哎呀。我把状态放在group by
,而不是select
。固定。以上是关于SQL查询查找每个用户的活动时间的主要内容,如果未能解决你的问题,请参考以下文章
查询用户出现在表中后的前 48 小时活动 (HiveQL / SQL)