特定のコンピューターの今日の平均接続数を 7 ~ 14 日前の平均接続数と比較するクエリを作成しようとしています。これはウィンドウ関数で処理するのが最適だと考えましたが、日付の正しい構文を取得できません。
iptable という名前の IP アドレスと接続レコードのテーブルがあり、列として soucreip、destinationip、timestamp があるとします。sourceip ごとのカウントを取得するために、前の 7 日間のウィンドウに対して試みているクエリを次に示します。
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;
このタイプのクエリを作成する最良の方法は何ですか? ウィンドウ関数アプローチは理にかなっていますか? または、大きなテーブルの場合により最適化された方法はありますか?