sql-查找连续执行3个操作的用户
我使用sql server,我有以下表格:sql-查找连续执行3个操作的用户,sql,sql-server,Sql,Sql Server,我使用sql server,我有以下表格: ID Date Amount 我需要编写一个查询,只返回至少连续购买了3次的用户,每一次都比另一次大 我知道我需要使用分区id和行号,但我不知道怎么做 提前感谢您如果您想连续购买三次且金额增加,请使用lead()获取下一次金额: select t.* from (select t.*, lead(amount, 1) over (partition by id order by date) as next_da
ID Date Amount
我需要编写一个查询,只返回至少连续购买了3次的用户,每一次都比另一次大
我知道我需要使用分区id和行号,但我不知道怎么做
提前感谢您如果您想连续购买三次且金额增加,请使用
lead()
获取下一次金额:
select t.*
from (select t.*,
lead(amount, 1) over (partition by id order by date) as next_date,
lead(amount, 2) over (partition by id order by date) as next2_amount
from t
) t
where next_amount > amount and next2_amount > next_amount;
我最初没有回答问题的“大于”部分。如果您希望连续三天购买,则:
如果您希望连续三天购买,并且每天最多购买一次,则可以使用:
select t.*
from (select t.*,
lead(date, 2) over (partition by id order by date) as next2_date
from t
) t
where next2_date = dateadd(day, 2, date);
如果您可以在某个日期复制,我建议使用以下变体:
select t.*
from (select t.*,
lead(date, 2) over (partition by id order by date) as next2_date
from (select distinct id, date from t) t
) t
where next2_date = dateadd(day, 2, date);
样本数据和预期结果将有所帮助。你说的“连续”是什么意思?