【问题标题】:Moving average with InfiniDBInfiniDB 移动平均线
【发布时间】:2013-04-24 14:19:20
【问题描述】:

我正在尝试编写一个从大表(>1M 行)返回移动平均值的查询。

该表有一列带有日期,另一列带有数值。我需要过去 10 天,每个日期的 10 天移动平均值。

无论我尝试什么,结果都非常缓慢(并且只能在 infinidb_vtable_mode = 0 或 2 的情况下运行)。

是否有适当的“infinidb 方式”来进行快速移动平均(或类似的窗口函数)查询?

谢谢。

【问题讨论】:

    标签: infinidb


    【解决方案1】:

    InfiniDB 4.0 中,支持窗口函数,使用 AVERAGE 作为窗口函数,您可以通过以下查询获得过去 10 天的移动平均值

    SELECT date_column, 
          AVERAGE(numeric_column) OVER (PARTITION BY date_column RANGE INTERVAL 10 DAY PRECEDING) 
    FROM table_name
    

    告诉我你得到了什么结果

    【讨论】:

    • 我收到此错误:“错误代码:122。IDB-9002:窗口规范中缺少 ORDER BY 表达式。”这个查询“SELECT VERSION()”给了我 5.1.39 的值
    • SELECT VERSION() 为您提供 MySQL 版本 - 因为 InfiniDB 是 MySQL 存储引擎。
    猜你喜欢
    • 2017-09-01
    • 2013-12-22
    • 2022-01-26
    • 2011-06-29
    • 2019-04-24
    • 2012-05-24
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多