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;
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;
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!