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

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

Linda Hamilton
Lepaskan: 2025-01-08 08:36:40
asal
427 orang telah melayarinya

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

Menentukan Jurang Masa Antara Rekod Berjujukan dalam SQL

Tutorial ini menunjukkan cara mengira perbezaan tarikh antara baris berturut-turut untuk nombor akaun yang diberikan dalam jadual SQL.

Kaedah 1: Pendekatan Subkueri

Pertanyaan ini mengira perbezaan tarikh menggunakan subkueri:

SELECT  ID,
        AccountNumber,
        Date,
        NextDate,
        DATEDIFF(day, Date, NextDate) AS DateDifference
FROM    (   SELECT  ID, 
                    AccountNumber,
                    Date,
                    (   SELECT  MIN(Date) 
                        FROM    YourTable T2
                        WHERE   T2.AccountNumber = T1.AccountNumber
                        AND     T2.Date > T1.Date
                    ) AS NextDate
            FROM    YourTable T1
        ) AS T
Salin selepas log masuk

Penjelasan:

Pertanyaan luar memilih ID, Nombor Akaun, Tarikh, Tarikh Seterusnya dikira dan perbezaan tarikh. Pertanyaan dalaman mengenal pasti tarikh seterusnya (NextDate) untuk setiap baris dengan mencari tarikh minimum yang lebih besar daripada tarikh baris semasa dan tergolong dalam akaun yang sama. DATEDIFF(day, Date, NextDate) mengira perbezaan hari.

Kaedah 2: Teknik Sertai Diri

Alternatif yang lebih cekap menggunakan gabungan sendiri:

SELECT  T1.ID, 
        T1.AccountNumber, 
        T1.Date, 
        MIN(T2.Date) AS NextDate, 
        DATEDIFF(day, T1.Date, MIN(T2.Date)) AS DateDifference
FROM    YourTable T1
LEFT JOIN YourTable T2
    ON T1.AccountNumber = T2.AccountNumber
    AND T2.Date > T1.Date
GROUP BY T1.ID, T1.AccountNumber, T1.Date;
Salin selepas log masuk

Pendekatan ini menggunakan LEFT JOIN untuk membandingkan setiap baris dengan baris berikutnya yang mempunyai nombor akaun yang sama dan tarikh kemudian. MIN(T2.Date) mencari tarikh seterusnya dan DATEDIFF(day, ...) mengira perbezaan hari. Baris tanpa baris berikut akan mempunyai nilai NULL untuk NextDate dan DateDifference. Ambil perhatian bahawa hujah pertama DATEDIFF menentukan unit perbezaan (di sini, 'hari'). Laraskan mengikut keperluan (mis., 'bulan', 'tahun').

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