Kira Perbezaan Masa antara Baris Berturut-turut Menggunakan SQL JOIN
Dalam bidang analisis data, mengira perbezaan masa antara baris berturut-turut boleh memberikan nilai yang bernilai pandangan. Sebagai contoh, dalam jadual yang mengandungi lajur bernama StartDate, anda mungkin ingin menentukan masa berlalu antara rekod berturut-turut untuk menangkap tempoh acara atau mengenal pasti corak.
Untuk mencapai objektif ini, satu pendekatan melibatkan penggunaan gabungan sendiri operasi. Dalam konteks ini, fungsi ROW_NUMBER() atau mekanisme kedudukan yang serupa boleh digunakan untuk mengenal pasti rekod bersebelahan. Walau bagaimanapun, penyelesaian yang lebih cekap wujud menggunakan klausa ON dalam penyataan gabungan.
Pertimbangkan contoh berikut:
PILIH A.requestid, A.mula, ( B.masa mula - A.masa mula) SEBAGAI perbezaan masa
DARI MyTable A INNER JOIN MyTable B ON B.requestid = A.requested 1
ORDER BY A.requestid ASC
Dalam pertanyaan ini, Jadual A dicantumkan kepada dirinya sendiri dengan syarat B.requestid sama dengan A.requestid 1. Ini membolehkan pemilihan baris berturut-turut, dengan perbezaan masa dikira sebagai perbezaan antara nilai masa mula baris B dan A .
Sebagai contoh, jika Jadual A mengandungi data berikut:
requestId | starttime |
---|---|
1 | 2011-10-16 13:15:56 |
2 | 2011-10-16 13:15:59 |
3 | 2011-10-16 13:15:59 |
4 | 2011-10-16 13:16:02 |
5 | 2011-10-16 13:18:07 |
Pertanyaan di atas akan menghasilkan keputusan berikut:
requestId | starttime | timedifference |
---|---|---|
1 | 2011-10-16 13:15:56 | 00:00:03 |
2 | 2011-10-16 13:15:59 | 00:00:00 |
3 | 2011-10-16 13:15:59 | 00:00:03 |
4 | 2011-10-16 13:16:02 | 00:00:03 |
Jika nilai yang diminta berturut-turut adalah tidak dijamin, pendekatan alternatif menggunakan CROSS JOIN dan klausa penapisan seterusnya boleh digunakan:
PILIH A.requestid, A.starttime, (B.starttime - A.starttime) SEBAGAI perbezaan masa
DARI MyTable A CROSS JOIN MyTable B
WHERE B.requested IN (SELECT MIN(C.requestid) FROM MyTable C WHERE C.requestid > A.requestid)
ORDER BY A.requestid ASC
Pertanyaan ini memastikan perbezaan masa dikira hanya untuk baris bersebelahan, tanpa mengira pesanan yang diminta.
Dengan menggunakan teknik SQL ini, anda boleh mengira dengan berkesan perbezaan masa antara baris berturut-turut dalam jadual data, membantu dalam analisis dan tafsiran data.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Masa Antara Baris Berturut-turut dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!