簡體   English   中英

mysql 最近N小時的簡單移動平均線

[英]mysql simple moving average in last N hours

下表中有一個每 5 分鍾填充一次速率的 cron 作業,希望能提供一些關於如何在速率列的最后 6 小時內獲取簡單移動平均線的指示

SQL 表如下所示:

id  rate        created_at          updated_at
1   11478.01    2020-08-29 03:11:28 2020-08-29 03:11:28
3   11481.28    2020-08-29 03:20:33 2020-08-29 03:20:33
4   11485.67    2020-08-29 03:29:53 2020-08-29 03:29:53
7   11486.57    2020-08-29 03:39:50 2020-08-29 03:39:50
8   11507.53    2020-08-29 03:48:10 2020-08-29 03:48:10
9   11515.37    2020-08-29 03:53:47 2020-08-29 03:53:47
10  11496.06    2020-08-29 04:01:06 2020-08-29 04:01:06
11  11499.58    2020-08-29 04:02:49 2020-08-29 04:02:49
12  11490.15    2020-08-29 04:22:00 2020-08-29 04:22:00
13  11509.22    2020-08-29 05:19:55 2020-08-29 05:19:55
14  11491.55    2020-08-29 05:26:34 2020-08-29 05:26:34

您可以使用 window 函數和范圍框:

select
    t.*,
    avg(rate) over(
        order by created_at
        range between interval 6 hour preceding and current row
    ) avg_rate
from mytable t

請注意,window 功能僅在 MySQL 的 8.0 版本中可用。

SELECT AVG(rate)
FROM TABLE
WHERE created_at <= DATE_SUB(NOW(), INTERVAL 6 HOUR);

DATE_SUB() function 從 DATE 或 DATETIME 值中減去時間值(或間隔)

您可以閱讀有關DATE_SUBAVG的詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM