Mengagregatkan Data Berasaskan Masa
Klausa GROUP BY MySQL membolehkan anda mengagregatkan data pada selang masa atau segmen masa tertentu. Ini amat berguna apabila berurusan dengan data bercap masa, membolehkan anda meringkaskan dan menganalisis data dengan berkesan pada julat masa yang diingini.
Untuk mencapai ini, anda boleh memanfaatkan fakta bahawa MySQL menggunakan cap masa Unix untuk mewakili tarikh dan masa secara dalaman. Dengan membahagikan cap waktu Unix dengan selang masa yang dikehendaki (cth., 10 atau 30 saat), anda boleh mengumpulkan data ke dalam segmen masa tertentu.
Sintaks untuk mengumpulkan mengikut "segmen masa" menggunakan GROUP BY ialah:
GROUP BY UNIX_TIMESTAMP(time_stamp) DIV <interval>
Di mana
Selang 10 saat:
GROUP BY UNIX_TIMESTAMP(time_stamp) DIV 10
Selang 30 saat:
GROUP BY UNIX_TIMESTAMP(time_stamp) DIV 30
Menggunakan pendekatan ini, anda boleh mengagregatkan data dengan mudah dalam segmen masa tertentu ini. Untuk mengira jumlah lajur kiraan bagi setiap segmen, anda boleh menggunakan pertanyaan berikut:
SELECT UNIX_TIMESTAMP(time_stamp) DIV <interval> AS time_segment, SUM(count) AS total_count FROM table_name GROUP BY time_segment
Sebagai contoh, untuk mendapatkan jumlah nilai kiraan bagi selang 10 saat, anda akan menggunakan:
SELECT UNIX_TIMESTAMP(time_stamp) DIV 10 AS time_segment, SUM(count) AS total_count FROM table_name GROUP BY time_segment
Ini akan menghasilkan output yang serupa dengan hasil yang diingini yang anda berikan:
time_segment | total_count |
---|---|
2010-06-15 23:35:00 | 1 |
2010-06-15 23:35:30 | 7544 |
2010-06-17 10:39:35 | 450 |
Adalah penting untuk ambil perhatian bahawa keputusan time_segment ialah cap waktu Unix, yang mewakili permulaan setiap segmen. Untuk memaparkan segmen masa dalam format yang lebih mesra pengguna, seperti "2010-06-15 23:35:00 hingga 2010-06-15 23:35:30," anda boleh menggunakan pemformatan rentetan tambahan dalam pertanyaan anda.
Dengan melaraskan nilai
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengagregat data berasaskan masa dalam MySQL menggunakan klausa GROUP BY untuk selang masa tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!