Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mengumpulkan cap masa ke dalam Selang 5 Minit untuk Kiraan Pertanyaan?
Kumpulkan cap masa mengikut selang 5 minit untuk pertanyaan kiraan
Soalan:
Pertanyaan untuk mengira bilangan kemunculan John dalam julat masa tertentu, tetapi hasilnya ialah cap masa yang tidak dikumpulkan dan kiraannya. Matlamatnya adalah untuk mengumpulkan hasil ke dalam selang 5 minit.
Penyelesaian:
Untuk mengumpulkan hasil dalam selang 5 minit, anda boleh menggunakan MySQL dan PostgreSQL dengan sintaks tertentu:
PostgreSQL:
<code class="language-sql">SELECT date_trunc('minute', timestamp) + INTERVAL '5 minutes' * (EXTRACT(MINUTE FROM timestamp)::integer / 5) AS five_minute_interval, name, COUNT(b.name) FROM time a, id WHERE … GROUP BY five_minute_interval, name ORDER BY five_minute_interval;</code>
MySQL:
<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 WHERE … GROUP BY five_minute_interval, name ORDER BY five_minute_interval;</code>
Dalam kedua-dua pertanyaan, klausa GROUP BY
dikumpulkan mengikut hasil bulat cap waktu dibahagikan dengan 300 (mewakili selang 5 minit). Ini dengan berkesan mencipta tong 5 minit untuk cap masa dan menetapkan setiap cap masa kepada tong yang sepadan. PostgreSQL menggunakan fungsi date_trunc
untuk mengendalikan pemotongan dan pengelompokan cap masa dengan lebih bersih, manakala MySQL menggunakan fungsi FROM_UNIXTIME
dan FLOOR
untuk mencapai fungsi yang sama.
Output:
Output kini akan menunjukkan hasil yang dikumpulkan mengikut selang 5 minit dan kiraan yang sepadan bagi bilangan kejadian John:
<code>five_minute_interval name COUNT(b.name) ------------------------ ---- ------------- 2010-11-16 10:30:00 John 2 2010-11-16 10:35:00 John 10 2010-11-16 10:40:00 John 0 2010-11-16 10:45:00 John 8 2010-11-16 10:50:00 John 0 2010-11-16 10:55:00 John 11</code>
Nota: Bahagian WHERE …
dalam kod perlu diganti dengan syarat pertanyaan anda mengikut situasi sebenar. Selain itu, untuk memastikan kebolehbacaan keputusan, klausa ORDER BY five_minute_interval
ditambah. Pernyataan SQL yang dipertingkatkan dengan lebih tepat melaksanakan pengelompokan pada selang 5 minit dan mengelakkan kemungkinan ralat pembundaran.
Atas ialah kandungan terperinci Bagaimana untuk mengumpulkan cap masa ke dalam Selang 5 Minit untuk Kiraan Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!