Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Perbezaan Masa Antara Baris Berturut-turut dalam Jadual SQL?

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

Mary-Kate Olsen
Lepaskan: 2024-11-15 12:55:03
asal
414 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!

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