sqlite3-筛选出具有相同标识符的第一条和最后一条记录


id,date,source,target,identifier
1,2020-10-10,internal,external,abc-123
2,2020-10-10,internal,internal,xyz-123
3,2020-10-11,external,external,abc-123
4,2020-10-12,external,external,abc-123

同一条记录(abc-123(有三个条目,我想过滤掉最旧和最新的记录。对于所有的记录,如果有重复的,那么我想得到最古老和最新的记录。

我不知道如何构造这样一个查询。任何帮助都将不胜感激。

您可以在此处使用分析函数:

WITH cte AS (
SELECT *, MIN(date) OVER (PARTITION BY identifier) min_date,
MAX(date) OVER (PARTITION BY identifier) max_date
FROM yourTable
)
SELECT id, date, source, target, identifier
FROM cte
WHERE date IN (min_date, max_date);

上面的CTE为每个标识符的最小和最大日期添加了两个新列到表中。然后,外部查询仅限于具有这些最短或最长日期的记录。

最新更新