在我的 postgreSQL 数据库中,我有一个包含日期和价格列的表。(“转换日期”和“价格”)
我想形成一个查询,该查询在跨越一年以上的日期范围内每周选择一行。
从这里的另一个问题/答案,我实现了这个代码,它适用于不到一年的日期范围:
;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 个月。
如何重新编写此代码以从该范围内的每周选择一个日期/价格?