【问题标题】:PostgreSQL Group by array of daterangePostgreSQL 按日期范围数组分组
【发布时间】:2021-03-05 01:13:06
【问题描述】:

我有一个 大量 表,其中的记录都有日期和价格:

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

【问题讨论】:

    标签: sql postgresql datetime aggregate-functions date-arithmetic


    【解决方案1】:

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

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

    $1 表示要传递给查询的dateranges 数组。

    【讨论】:

    • 完美!谢谢!
    猜你喜欢
    • 2013-11-04
    • 2021-11-16
    • 2013-05-19
    • 2010-10-31
    • 2016-09-22
    • 2019-02-19
    • 2019-02-14
    相关资源
    最近更新 更多