我有一个名为ip_storage_table的Postgres表,它存储了三个值ip_address,virtual_id和time_stamp
这之间的实际关系最初是所有I / P都有与之关联的virtual_id,例如:
192.168.1.1 has 3000 at 2015-07-20 16:00:00
192.168.1.2 has 1000 at 2015-07-20 16:00:00
192.168.1.3 has 2000 at 2015-07-20 16:00:00
192.168.1.2 has 4000 at 2015-07-20 17:00:00
192.168.1.1 has 2000 at 2015-07-20 18:00:00
此表包含特定时间戳中每个I / P地址的virtual_id,因此它可以包含更多条目,如
{{1}}
我想运行一个查询:
我本来可以上传数据库的图像,但是我使用的是Linux,无法找到图像编辑工具,如果你不能通过上面的描述获得数据库视图让我知道,我会再试一次< / p>
答案 0 :(得分:1)
如果我理解正确,您可以使用distinct on
:
select distinct on (virtual_id) t.*
from mytable t
order by virtual_id, time_stamp desc;
这将返回每个virtual_id
及其最近的行。
答案 1 :(得分:0)
您可以尝试: -
SELECT i/p, MIN(virtual_id), MAX(timestamp)
FROM YOUR_TABLE
GROUP BY i/p;
希望这有帮助。