PostgreSQL 按日期范围数组分组

PostgreSQL Group by array of daterange

我有一个 大量 table 的记录,它们都有日期和价格:

id | date | price | etc...

然后我有一个随机日期范围的列表,从不具有相同的长度:

ARRAY [
    daterange('2020-11-02','2020-11-05'), 
    daterange('2020-11-15','2020-11-20')
] 

我将如何最有效地根据记录在其中一个范围内的存在对记录进行求和和分组,如下所示:

range                   | sum
------------------------------------------
[2020-11-02,2020-11-05) | 125.55
[2020-11-15,2020-11-20) | 566.12

您可以取消嵌套数组,left join table 包含在范围内的日期,最后聚合:

select x.rg, sum(t.price) sum_price
from unnest() x(rg)
left join mytable t on x.rg @> t.date 
group by x.rg

</code> 表示要传递给查询的 <code>daterange 数组。