首頁 > 資料庫 > mysql教程 > 如何使用 SQL 將時間序列資料分組為 5 分鐘間隔?

如何使用 SQL 將時間序列資料分組為 5 分鐘間隔?

Barbara Streisand
發布: 2025-01-15 07:47:44
原創
472 人瀏覽過

How to Group Time-Series Data into 5-Minute Intervals Using SQL?

聚合時間序列資料:SQL 中的 5 分鐘間隔

分析時間序列資料通常需要將資料分組到特定的區間。本指南示範如何使用 SQL 將資料分組為 5 分鐘間隔,以解決需要在定義的時間範圍內聚合資料的場景。 此範例使用「time」和「id」表中的數據,計算名稱「John」的出現次數。 挑戰在於從單獨的時間戳分組轉向 5 分鐘間隔聚合。

不同資料庫系統的解決方案

最佳方法因您的資料庫系統而異。以下是 PostgreSQL 和 MySQL 的解決方案:

PostgreSQL

PostgreSQL 提供了一種靈活的方法,使用 extract('epoch') 來取得 Unix 時間戳記(自紀元以來的秒數)和 INTERVAL:

<code class="language-sql">SELECT
    date_trunc('minute', timestamp) + INTERVAL '5 minutes' * (extract(minute from timestamp)::int / 5) AS five_minute_interval,
    name,
    COUNT(b.name)
FROM time a, id b
WHERE ... -- Your WHERE clause here
GROUP BY five_minute_interval, name
ORDER BY five_minute_interval;</code>
登入後複製

此查詢首先使用 date_trunc 將時間戳截斷為分鐘。然後,它在原始時間戳的分鐘的基礎上加上 5 分鐘的倍數來計算 5 分鐘間隔。

MySQL

MySQL 使用 UNIX_TIMESTAMP() 和整數除法提供了一個更簡單的解:

<code class="language-sql">SELECT
    FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(timestamp) / 300) * 300) AS five_minute_interval,
    name,
    COUNT(b.name)
FROM time a, id b
WHERE ... -- Your WHERE clause here
GROUP BY five_minute_interval, name
ORDER BY five_minute_interval;</code>
登入後複製

此查詢將時間戳記轉換為 Unix 時間戳,執行整數除以 300(5 分鐘內的秒數),然後使用 FROM_UNIXTIME().

將結果轉換回時間戳

兩個查詢均以計算出的 5 分鐘間隔和名稱對結果進行分組,從而提供所需的聚合輸出。請記得將 ... 替換為您的特定 WHERE 子句。 ORDER BY 子句確保結果以時間順序呈現。

以上是如何使用 SQL 將時間序列資料分組為 5 分鐘間隔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板