首页 > 解决方案 > 如何删除 SQL 中的重复数据?

问题描述

我需要显示不重复的行,但仅与它们的邻居一起显示,它们应该保留在 sqlite 中的整个数据库中(也在单个副本中)。这是我所缺少的: 初始数据库:

(id (INTEGER PRIMARY KEY)|security_id|date_and_time|price)
(1|AAPL|2020-08-21 09:59:51|100.2)
(2|AAPL|2020-08-21 09:59:51|100.2)
(3|AAPL|2020-08-21 09:59:51|100.2)
(4|AAPL|2020-08-21 09:59:52|100.2)
(5|AAPL|2020-08-21 09:59:52|100.3)
(6|AAPL|2020-08-21 09:59:52|100.2)
...

应该输出什么:

(4|AAPL|2020-08-21 09:59:51|100.2)
(5|AAPL|2020-08-21 09:59:52|100.3)
(6|AAPL|2020-08-21 09:59:52|100.2)
...

谢谢 :)

标签: sqlsqlite

解决方案


使用滞后和案例:

SELECT X.ID, X.SECURITY_ID, X.DATE_AND_TIME, X.PRICE FROM (
SELECT CASE WHEN NEXT_VALUE = 0 THEN 1 
            WHEN NEXT_VALUE = PRICE THEN 0
            ELSE 1 END AS CHECK_VALUE, A.* FROM (
SELECT A.*,LEAD(A.PRICE, 1, 0) OVER(ORDER BY ID) NEXT_VALUE FROM 
TAB A ) A ) X WHERE CHECK_VALUE = 1 ORDER BY ID;

推荐阅读