【发布时间】:2012-11-13 21:07:50
【问题描述】:
我正在尝试编写一个查询来比较给定计算机今天的平均连接数与 7 到 14 天前的平均连接数。我认为这最好由窗口函数处理,但我无法获得正确的日期语法。
假设我有一个名为 iptable 的 IP 地址和连接记录表,其中包含 soucreip、destinationip、timestamp 作为列。这是我在前 7 天窗口中尝试的查询,以获取每个 sourceip 的计数:
select
sourceip,
destinationip,
timestamp,
count(*) OVER (PARTITION BY sourceip order by timestamp
RANGE BETWEEN now() - '7 day'::Interval PRECEDING
now() - '14 day'::Interval FOLLOWING)
from
iptable;
编写此类查询的最佳方法是什么?窗口函数方法是否有意义,或者是否有更优化的方法来处理大型表的情况?
【问题讨论】:
-
请在所有问题中显示您的 PostgreSQL 版本,以及错误消息的确切文本。
标签: sql postgresql window-functions