我有下表
我希望删除 var1
中具有重复值的所有行和var2
至少保留其中一项的更改。抱歉,解释不清楚,下面是所需表格的示例:
最后,有没有办法知道在执行查询之前该表将占用多少空间?
编辑:修复表中的变量名称
最佳答案
这是一个间隙和孤岛问题,您可以尝试使用两个行号之间的差异来解决它,如下所示:
WITH define_groups AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY var2 ORDER BY time) -
ROW_NUMBER() OVER (PARTITION BY var1, var2 ORDER BY time) grp
FROM table_name
),
row_numbering AS
(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY var2, grp ORDER BY time) rn
FROM define_groups
)
SELECT var1, time, var2
FROM row_numbering
WHERE rn = 1
ORDER BY var2, time
参见demo .
关于SQL 保留包含列子集中更改的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74798023/