Bagaimana untuk Mengira Perbezaan Masa Antara Baris Berturut-turut dalam SQL?

Mary-Kate Olsen
Lepaskan: 2024-11-19 15:23:02
asal
577 orang telah melayarinya

How to Calculate the Time Difference Between Consecutive Rows in SQL?

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan