gpt4 book ai didi

sql-server - 删除时间序列中的重复项

转载 作者:行者123 更新时间:2023-12-04 00:26:04 25 4
gpt4 key购买 nike

我在 SQL Server 2012 表中存储了大量每 1 毫秒进行一次的测量。每当某些行中有 3 个或更多重复值时,我想删除中间的重复值。此示例数据图像中突出显示的值是我要删除的值。有没有办法用 SQL 查询来做到这一点?

SampleData

最佳答案

您可以使用 CTEROW_NUMBER 执行此操作:

SQL Fiddle

WITH CteGroup AS(
SELECT *,
grp = ROW_NUMBER() OVER(ORDER BY MS) - ROW_NUMBER() OVER(PARTITION BY Value ORDER BY MS)
FROM YourTable
),
CteFinal AS(
SELECT *,
RN_FIRST = ROW_NUMBER() OVER(PARTITION BY grp, Value ORDER BY MS),
RN_LAST = ROW_NUMBER() OVER(PARTITION BY grp, Value ORDER BY MS DESC)
FROM CteGroup
)
DELETE
FROM CteFinal
WHERE
RN_FIRST > 1
AND RN_LAST > 1

关于sql-server - 删除时间序列中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30563384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com