sql-查找连续执行3个操作的用户

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

我使用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_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);

样本数据和预期结果将有所帮助。你说的“连续”是什么意思?