在 MySQL 中處理日期時間資料時如何實現 GROUP BY 3 秒的精確度?

Susan Sarandon
發布: 2024-10-24 06:59:02
原創
805 人瀏覽過

How to Achieve GROUP BY Precision of  /- 3 Seconds When Working with DateTime Data in MySQL?

MySQL GROUP BY DateTime,精度為/- 3 秒

問題陳述

給定包含ID、時間戳記和標題列的表,目標是將3 秒內出現的記錄分組。在這種情況下,時間戳為 15:00:00 和 15:00:02 的行將被分組在一起。

解決方案

而不是識別基於鏈的開頭對於各個行,讓我們專注於鏈結時間戳。

查詢 1:確定鏈起始時間戳

<code class="mysql">SELECT DISTINCT Timestamp
FROM Table a
LEFT JOIN Table b
ON (b.Timestamp >= a.Timestamp - INTERVAL 3 SECONDS
    AND b.Timestamp < a.Timestamp)
WHERE b.Timestamp IS NULL
登入後複製

此查詢返回在其上方沒有時間戳的時間戳3 秒,表示鏈的開始。

查詢2:將記錄與鏈開始時間戳關聯

<code class="mysql">SELECT Table.id, MAX(StartOfChains.TimeStamp) AS ChainStartTime
FROM Table
JOIN ([query #1]) StartOfChains
ON Table.Timestamp >= StartOfChains.TimeStamp
GROUP BY Table.id</code>
登入後複製

對於每一行,此查詢標識最大的鏈- 開始時間戳(出現在行時間戳之前)。

最終GROUP BY 操作

<code class="mysql">SELECT COUNT(*) --or whatever
FROM Table
JOIN ([query #2]) GroupingQuery
ON Table.id = GroupingQuery.id
GROUP BY GroupingQuery.ChainStartTime</code>
登入後複製

此查詢使用查詢2 中的GroupingQuery 表根據以下條件對記錄進行分組ChainStartTime 列,啟用每個時間組內的聚合計算。

以上是在 MySQL 中處理日期時間資料時如何實現 GROUP BY 3 秒的精確度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!