我在MySql中提到的表下方。
ID UniqueId Date
T-1 AT-1 2018-04-03 15:16:48
T-2 AT-1 2018-04-10 18:21:24
T-3 AT-1 2018-04-22 13:05:16
T-4 AT-2 2018-05-05 17:12:04
T-5 AT-2 2018-05-15 05:03:01
T-6 AT-2 2018-05-25 06:09:23
T-7 AT-3 2018-06-01 06:09:23
T-8 AT-3 2018-06-25 06:09:23
T-9 AT-3 2018-07-01 06:09:23
我只想获取那些基于ID
的最新UniqueId
基础大于或等于10天的记录。
例如,ID
T3是日期ID
UniqueId
的最新AT-2
,而即时ID
T2之间的差是12天。 / p>
此外,如果R可行,也可以:)
预期输出:
ID UniqueId Date Difference
T-3 AT-1 2018-04-22 13:05:16 12
T-6 AT-2 2018-05-25 06:09:23 10
答案 0 :(得分:1)
此查询将为您提供所需的结果。首先JOIN
将表移至每个MAX(Date)
的{{1}}的派生表,然后使用UniqueId
值为最新的{{1 }}小于最大值。最后,Date
子句会滤除至少10天后的日期:
Date
输出:
WHERE
答案 1 :(得分:1)
您可以使用EXISTS
来检查条件:
SELECT *
FROM t
WHERE NOT EXISTS (
-- no newer row exists
SELECT 1
FROM t AS n
WHERE n.UniqueId = t.UniqueId
AND n.Date > t.Date
) AND NOT EXISTS (
-- no older row exists that has difference of less than 10 days
SELECT 1
FROM t AS o
WHERE o.UniqueId = t.UniqueId
AND o.Date < t.Date
AND o.Date >= t.Date - INTERVAL 10 DAY
)