【发布时间】:2013-04-24 14:19:20
【问题描述】:
我正在尝试编写一个从大表(>1M 行)返回移动平均值的查询。
该表有一列带有日期,另一列带有数值。我需要过去 10 天,每个日期的 10 天移动平均值。
无论我尝试什么,结果都非常缓慢(并且只能在 infinidb_vtable_mode = 0 或 2 的情况下运行)。
是否有适当的“infinidb 方式”来进行快速移动平均(或类似的窗口函数)查询?
谢谢。
【问题讨论】:
标签: infinidb
我正在尝试编写一个从大表(>1M 行)返回移动平均值的查询。
该表有一列带有日期,另一列带有数值。我需要过去 10 天,每个日期的 10 天移动平均值。
无论我尝试什么,结果都非常缓慢(并且只能在 infinidb_vtable_mode = 0 或 2 的情况下运行)。
是否有适当的“infinidb 方式”来进行快速移动平均(或类似的窗口函数)查询?
谢谢。
【问题讨论】:
标签: infinidb
在 InfiniDB 4.0 中,支持窗口函数,使用 AVERAGE 作为窗口函数,您可以通过以下查询获得过去 10 天的移动平均值
SELECT date_column,
AVERAGE(numeric_column) OVER (PARTITION BY date_column RANGE INTERVAL 10 DAY PRECEDING)
FROM table_name
告诉我你得到了什么结果
【讨论】: