我有一個這樣的示例表:
| 代碼 | 時間 |
|---|---|
| 一個 | 9:30:06 |
| 一個 | 9:30:07 |
| 一個 | 10:00:00 |
| 乙 | 10:30:00 |
| 一個 | 10:45:00 |
| 乙 | 10:46:01 |
| 乙 | 10:46:00 |
我想:
| 代碼 | 時間 |
|---|---|
| 一個 | 9:30:06 |
| 一個 | 10:00:00 |
| 乙 | 10:30:00 |
| 一個 | 10:45:00 |
| 乙 | 10:46:01 |
選擇的時間并不重要,GROUP BY或DISTINCT ON應該在 1 秒的范圍內。
編輯:code彼此相隔1 秒內的所有內容都被視為重復,并且只應選擇其中的一行。
uj5u.com熱心網友回復:
假設您有一個名為的表codes,其中包含兩列(code和time),以下查詢將生成您正在尋找的確切結果(如上表所示):
WITH dup_codes AS (
SELECT code, time FROM codes c1
WHERE EXISTS (SELECT 1 from codes c2
WHERE c2.code = c1.code
-- this is where magic happens!
AND c2.time interval '1 second' = c1.time
)
)
SELECT * FROM Codes
WHERE time NOT IN (SELECT time FROM dup_codes);
資料庫小提琴:https ://dbfiddle.uk/?rdbms = postgres_13 & fiddle = c9c4def09b06f04f77d5fa71f29e6c57
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/395784.html
標籤:sql PostgreSQL的
