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 *
。
我正在执行转化分析,只需要查看 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 *
。