【发布时间】:2021-01-23 13:05:26
【问题描述】:
所以,首先,数据看起来像这样:
Sample Data if you would like to work
表中的每条记录都代表一个特定的用户,他们用一定数量的钱玩特定类型的游戏。因此,用户可能有一天会玩而不是其他天。
我想提取的是......用户在他们最后活跃的 n 天中的活动(假设 n 是 15)。为了清楚起见,我举个例子:假设一个 account_id 为 12345 的用户在 2020 年 9 月 16、17、18、19、25、26 和 2020 年 10 月 8 日玩了一些游戏(他玩的游戏没有没关系,那些日子他至少打了一场比赛)。到目前为止,我所做的是从他最近玩的日期(2020 年 10 月 8 日到 15 天前,即 2020 年 9 月 24 日)中提取了该玩家的活动。所以,我只会有玩家在 2020 年 9 月 25,26 日和 2020 年 10 月 8 日的游戏活动。但我想要的是过去 15 天的活动,包括 2020 年 10 月 8 日和 9 月 16,17,18 ,19,25,26 和之前的 8 个活动天(因为我想要 15 天,我提到的日期数为 7)
我对过去 15 天活动的处理方式(我可能是活跃的或不活跃的)是
WITH BASE AS(
SELECT
MAX(date) AS LastDate,
account_id
FROM aug
GROUP BY account_id
)
SELECT
ga.account_id,
ga.date
FROM aug GA
JOIN BASE B ON b.account_id = ga.account_id
WHERE ga.date >= DATE_SUB(b.LastDate, INTERVAL 15 DAY)
AND ga.date <= b.LastDate
我无法将过去 15 天转换为最后活跃的 15 天。请指导我。 提前致谢:)
【问题讨论】:
-
@forpas 没关系。
标签: sql sqlite datetime window-functions pandasql