我有下面的表格,用于收集我感兴趣的产品的信息。
CREATE TABLE priceinfo (
date TEXT,
title TEXT,
sku INTEGER,
price REAL,
media TEXT,
url TEXT
);如何从包含多个连续行的不同日期重复数据的数据库中删除条目?示例是下面的数据。我希望保留条目,因为它们会发生变化,而不是日复一日保持相同的条目。
1 2019-12-10 Product1 123456789 25.99 Blu-ray https://www.example.com
2 2019-12-11 Product1 123456789 21.59 Blu-ray https://www.example.com
3 2019-12-12 Product1 123456789 21.59 Blu-ray https://www.example.com
4 2019-12-13 Product1 123456789 21.59 Blu-ray https://www.example.com
5 2019-12-14 Product1 123456789 20.89 Blu-ray https://www.example.com
6 2019-12-15 Product1 123456789 21.59 Blu-ray https://www.example.com在本例中,我希望保留第1行、第2行、第5行和第6行,但删除第3行和第4行,因为这两行中除了日期之外没有任何信息更改。
发布于 2020-01-14 08:18:01
假设日期没有重复项,您可以使用lag()
select t.*
from (select t.*,
lag(date) over (order by date) as prev_date,
lag(date) over (partition by title, sku, price, media, url order by date) as prev_date2
from t
) t
where prev_date is null or prev_date <> prev_date2;编辑:
假设日期是唯一的,您可以使用以下逻辑:
with todelete as (
select t.*
from (select t.*,
lag(date) over (order by date) as prev_date,
lag(date) over (partition by title, sku, price, media, url order by date) as prev_date2
from t
) t
where prev_date is null or prev_date <> prev_date2
)
delete from t
where t.date in (select cte.date from cte);https://stackoverflow.com/questions/59725947
复制相似问题