基于postgresql中的每N天进行分组

时间:2012-10-25 21:34:03

标签: postgresql time aggregation window-functions

我有一张表,其中包括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中是否可以使用它?

2 个答案:

答案 0 :(得分:8)

SQL Fiddle

select
    "date",
    temperature,
    avg(temperature) over(order by "date" rows 10 preceding) mean
from t
order by "date"

答案 1 :(得分:2)

select id, 
       temperature, 
       sum(temperature) over (partition by null order by date rows between 10 preceding and current row)
from that_table;

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