私の postgreSQL データベースには、日付と価格の列を持つテーブルがあります。('transdate' と 'price')
1 年以上にわたる日付範囲で、毎週 1 行を選択するクエリを作成したいと考えています。
ここでの別の質問/回答から、1年未満の日付範囲で機能するこのコードを実装しました:
;with cte as
(
select *,
row_number() over (partition by Extract (week from transdate) order by transdate desc) as rn
from "tablename" where transdate between '06-01-1999' and '06-01-1999'::timestamp + `'50 week'::interval
)
select transdate, price from cte where rn = 1 order by transdate;
ただし、間隔を 50 週間以上延長しても、最大 12 か月しか選択されません。
このコードを書き直して、範囲内の毎週から 1 つの日付/価格を選択するにはどうすればよいですか?