【发布时间】:2013-02-06 15:45:40
【问题描述】:
首先,我确定这个问题的答案就在某个地方,但我只是不知道这个特定问题被称为什么来搜索它。
我有一个这样的日志表:
编号 |关键 |价值 |时间戳 ====================================== 1 |一个 |苹果| 高分辨率照片| CLIPARTO 2013-02-05 01:01:01.0001 2 |乙 |蝙蝠 | 2013-02-05 01:01:01.0002 3 |一个 |苹果| 高分辨率照片| CLIPARTO 2013-02-05 01:01:01.0003 4 |乙 |蝙蝠 | 2013-02-05 01:01:01.0004 5 |一个 |苹果| 高分辨率照片| CLIPARTO 2013-02-05 01:01:01.0005 6 |乙 |蝙蝠 | 2013-02-05 01:01:01.0006我想做这样的查询:
按时间戳顺序从日志组中选择键、值、时间戳
我希望查询返回以下内容:
编号 |关键 |价值 |时间戳 ====================================== 5 |一个 |苹果| 高分辨率照片| CLIPARTO 2013-02-05 01:01:01.0005 6 |乙 |蝙蝠 | 2013-02-05 01:01:01.0006但它告诉我我应该将时间戳放在违背目的的组中。任何帮助将不胜感激。
顺便说一句,我正在使用 PostgreSQL。
【问题讨论】:
-
你能把你想看到的输出显示出来吗,你的问题对我来说并不完全清楚
-
那么你想要返回什么时间戳。查看键 A:d 你想要 .0001、.0003 还是 .0005?,你需要对时间戳执行聚合,然后是 min、max、avg
-
这取决于你想要做什么。因为每个
key组有多个不同的timestamps,所以希望在排序/过滤之前对集合进行分组(它通常与聚合一起使用)。如果您想要所有时间戳,那么您需要ORDER BY key ASC timestamp ASC。如果您只喜欢每个键的最小/最大(聚合函数)timestamp,那么现有答案之一将起作用。 -
当然可以。我想查看最后更新的键值。所以在这种情况下 id 5 和 6
标签: sql postgresql group-by greatest-n-per-group