我们说我有一张时间表的表格如下:
CREATE TABLE foo (
spent_on DATETIME,
hours FLOAT
)
假设spent_on
是记录值的时间戳,hours
是浮点值,表示在任务上花费的小时数。
如何在过去7天内获得浮动平均小时数?
我提出了以下建议,但它没有成功:
select spent_on, hours, avg(hours)
over RANGE BETWEEN spent_on - INTERVAL '7 days' AND CURRENT ROW from daily;
我收到以下错误:
ERROR: syntax error at or near "ROW"
LINE 1: ... BETWEEN spent_on - INTERVAL '7 days' AND CURRENT ROW from d...
我试图理解窗口函数的文档,但是我在抓住分区,窗口和框架之间的想法时遇到了麻烦。因此,无法提出查询。
答案 0 :(得分:2)
我不确定RANGE
语法,所以让我提供一个带有子查询的解决方案(如果性能不是小表ETC的问题..):
SELECT t.spent_on,t.hours,
COALESCE( (SELECT AVG(s.hours) FROM foo
WHERE t.spent_on > CURRENT_TIMESTAMP - INTERVAL '7 days'),0) float_avg
FROM foo t