gpt4 book ai didi

sql - 如何在跨越一年以上的日期范围内每周选择一行?

转载 作者:行者123 更新时间:2023-11-29 12:22:33 25 4
gpt4 key购买 nike

在我的 postgreSQL 数据库中,我有一个包含日期和价格列的表。 ('transdate' 和 'price')

我想形成一个查询,在超过一年的日期范围内每周选择一行。

从这里的另一个问题/答案,我实现了这段适用于不到一年的日期范围的代码:

;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 个月。

我如何重写此代码以从范围内的每周选择一个日期/价格?

最佳答案

您的问题是周数在年边界处回绕,但您想同时查看周数年。幸运的是,您可以同时对几件事进行分区:

row_number() over (
partition by extract(week from transdate),
extract(year from transdate)
order by transdate desc
) as rn

关于sql - 如何在跨越一年以上的日期范围内每周选择一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com