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中文網其他相關文章!