4

我有一个包含 ID、日期、值(温度)和其他一些东西的表。我的表如下所示:

+-----+--------------+------------+
| ID  |  temperature |    Date    |
+-----+--------------+------------+
|  1  |  26.3        | 2012-02-05 |
|  2  |  27.8        | 2012-02-06 |
|  3  |  24.6        | 2012-02-07 |
|  4  |  29.6        | 2012-02-08 |
+-----+--------------+------------+

我想每 10 天执行一次聚合查询,例如 sum 和 mean。

我想知道是否可以在 psql 中使用?

4

2 回答 2

9

SQL小提琴

select
    "date",
    temperature,
    avg(temperature) over(order by "date" rows 10 preceding) mean
from t
order by "date"
于 2012-10-25T22:17:29.790 回答
3
select id, 
       temperature, 
       sum(temperature) over (order by "date" rows between 10 preceding and current row)
from the_table;

它可能不完全是您想要的,因为它会对最后 10 行进行移动总和,这不一定与过去 10 天相同。


从 Postgres 11 开始,您现在可以使用基于间隔的范围

select id, 
       temperature, 
       avg(temperature) over (order by "date" 
                                range between interval '10 days' preceding and current row)
from the_table;
于 2012-10-25T22:07:38.253 回答