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

Mary-Kate Olsen
Lepaskan: 2024-11-15 12:55:03
asal
299 orang telah melayarinya

How to Calculate Time Difference Between Consecutive Rows in a SQL Table?

Mengira Perbezaan Masa Antara Baris Berturut-turut

Tugasnya ialah untuk menentukan perbezaan masa antara rekod berturut-turut dalam jadual yang mengandungi lajur Tarikh Mula. Untuk mencapai matlamat ini, kita boleh menggunakan penyertaan sendiri dan membandingkan setiap rekod dengan rekod seterusnya dalam jadual.

Menggunakan Join Sendiri:

Untuk membandingkan berturut-turut rekod, kita boleh menggunakan gabungan sendiri di atas meja. Berikut ialah contoh pertanyaan:

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A
INNER JOIN MyTable B ON B.requestid = (A.requestid + 1)
ORDER BY A.requestid ASC;
Salin selepas log masuk

Pertanyaan ini mencipta jadual bercantum di mana setiap rekod (A) digandingkan dengan rekod seterusnya (B). Perbezaan masa lajur yang dikira memberikan perbezaan masa antara kedua-dua rekod.

Mengendalikan Id Permintaan Bukan Berturut-turut:

Jika id permintaan tidak berturut-turut, kita boleh menggunakan CROSS JOIN dan penapisan tambahan untuk memadankan setiap rekod dengan pengganti terdekatnya.

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A
CROSS JOIN MyTable B
WHERE B.requestid IN (SELECT MIN(C.requestid) FROM MyTable C WHERE C.requestid > A.requestid)
ORDER BY A.requestid ASC;
Salin selepas log masuk

Pertanyaan ini memastikan setiap rekod dipadankan dengan pengganti terdekatnya, walaupun id permintaan tidak berturut-turut.

Data Contoh:

Pertimbangkan data sampel yang disediakan oleh pengarang:

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

Output:

Menggunakan pertanyaan di atas kepada data sampel akan menghasilkan output berikut:

requestId startdate timedifference
1 2011-10-16 13:15:56 NULL
2 2011-10-16 13:15:59 00:00:03
3 2011-10-16 13:15:59 00:00:00
4 2011-10-16 13:16:02 00:00:03
5 2011-10-16 13:18:07 00:02:05

Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Masa Antara Baris Berturut-turut dalam Jadual 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