Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mencapai KUMPULAN MENGIKUT Ketepatan /- 3 Saat Apabila Bekerja dengan Data DateTime dalam MySQL?

Bagaimana untuk Mencapai KUMPULAN MENGIKUT Ketepatan /- 3 Saat Apabila Bekerja dengan Data DateTime dalam MySQL?

Susan Sarandon
Susan Sarandonasal
2024-10-24 06:59:02806semak imbas

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

MySQL GROUP MENGIKUT DateTime dengan /- Ketepatan 3 Saat

Pernyataan Masalah

Diberi jadual dengan lajur untuk ID, cap masa dan tajuk, matlamatnya adalah untuk mengumpulkan rekod yang berlaku dalam masa 3 saat antara satu sama lain. Dalam senario ini, baris dengan cap masa 15:00:00 dan 15:00:02 akan dikumpulkan bersama.

Penyelesaian

Daripada mengenal pasti permulaan berasaskan rantai pada baris individu, mari fokus pada merantai cap masa.

Pertanyaan 1: Tentukan Cap Masa Permulaan Rantaian

<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

Pertanyaan ini mengembalikan cap masa yang tidak mempunyai cap masa di atasnya dalam 3 saat, menunjukkan permulaan rantai.

Pertanyaan 2: Kaitkan Rekod dengan Cap Masa Permulaan Rantaian

<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>

Untuk setiap baris, pertanyaan ini mengenal pasti rantaian terbesar -cap masa permulaan (berlaku sebelum cap masa baris).

KUMPULAN Akhir MENGIKUT Operasi

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

Pertanyaan ini menggunakan jadual GroupingQuery daripada Pertanyaan 2 untuk mengumpulkan rekod berdasarkan lajur ChainStartTime, membolehkan pengiraan agregat dalam setiap kumpulan masa.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai KUMPULAN MENGIKUT Ketepatan /- 3 Saat Apabila Bekerja dengan Data DateTime dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn