2

您如何在 Postgres 中执行 GROUP BY 分钟语句?我也想知道如果有记录丢失如何用零替换丢失?

SELECT avg(load) as load, min(created_at) as create_at FROM stats GROUP BY ?what here?

那么我会得到如下行:

   created_at   | load
27.3.2013 16:08 | 15
27.3.2013 16:09 | 14
27.3.2013 16:10 | 16
27.3.2013 16:12 | 15

缺少一条记录,请注意

27.3.2013 16:11 | 0

如何设置默认值或如何调用?

4

1 回答 1

1

你需要加入一个包含你需要的所有分钟的集合。您可以为此使用 generate_series(start, stop, step)。是这样的:

SELECT avg(load), min(created_at) as load 
FROM generate_series('2013-3-20 0:00:00'::timestamp, '2013-3-30 0:00:00', 
              '1 minute') AS minutes(minute)
    LEFT JOIN stats ON minute=date_trunc('minute', stats.created_at)
GROUP BY minute
于 2013-03-27T19:58:49.393 回答