SQL 每个 ID 在不同的日期后删除

SQL Delete after a different date for each ID

我正在执行转化分析,只需要查看 activity 每个 User_ID 的第一个转化。

我可以通过以下查询找到每个用户首​​次转化的时间:

select min([Time]), [User_ID]
from [Table_1]
where [Event_Type] = 2 --just a filter for conversions
group by [User_ID]  

但是,现在我想删除 [Table1] 中每个 [User_ID]、 特定分钟([时间])后的所有数据。 怎么办我这样做?

感谢任何帮助!

你可以使用 CTE + ROW_NUMBER:

With CTE AS
(
   SELECT [Time], [User_ID],
          RN = ROW_NUMBER() OVER (Partition By [User_ID] ORDER BY [Time])
   FROM Table1
   WHERE [Event_Type] = 2
)
DELETE FROM CTE WHERE RN > 1

如果您不想删除除一条记录以外的所有记录,但所有记录的时间都与每个用户的最短时间不同(如果有联系),请改用 DENSE_RANK。如果您想查看要删除的内容,请使用 SELECT *