【发布时间】:2020-10-21 06:53:16
【问题描述】:
我有一个表,其中包含 osi_key(标识号)、值和时间的列。 我想知道每个 osi_key 何时达到其最大值。 我编写了一个 SQL 查询来执行此操作:
SELECT t1.osi_key, t1.time, t1.value
FROM
(
SELECT osi_key, MAX(value) AS max_value
FROM data_values_6_2020
WHERE value > 0
GROUP BY osi_key
) AS t2
INNER JOIN data_values_6_2020 AS t1
ON t1.osi_key = t2.osi_key
AND t1.value = t2.max_value
但是,如果它看到相同 osi_key 的重复 MAX 值,它将返回具有唯一时间戳的所有行。
我希望它忽略多个时间戳,并且只为每个 OSI_key 返回一行。也许最新的时间戳看起来像这样:
这可能吗?
【问题讨论】:
-
请在您的问题中添加标签,让其他人知道您使用的是哪个 DBMS
标签: sql select max greatest-n-per-group