Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mengira Perbezaan Antara Baris dalam Pernyataan SELECT MySQL?

Bagaimana untuk Mengira Perbezaan Antara Baris dalam Pernyataan SELECT MySQL?

DDD
DDDasal
2024-11-07 09:32:03778semak imbas

How to Calculate the Difference Between Rows in a MySQL SELECT Statement?

Mengira Perbezaan Antara Baris dalam Pernyataan SELECT MySQL

Masalah:

Bagaimana untuk menentukan perbezaan dalam nilai antara dua baris berikutnya dalam pernyataan MySQL SELECT? Jadual yang disediakan mengandungi data seperti kilometer, tarikh dan pengenalan kereta. Matlamatnya adalah untuk mencipta paparan yang merangkumi lajur tambahan yang menunjukkan bilangan kilometer sejak tarikh sebelumnya.

Penyelesaian:

Untuk mencapai ini, gabungan KIRI JOIN dan subquery digunakan. LEFT JOIN membolehkan kami mendapatkan semula data daripada jadual myTable, manakala subquery memastikan perbandingan dibuat dengan baris terbaharu yang mempunyai tarikh sebelum baris semasa. Pendekatan ini berkesan menghasilkan perbezaan yang diingini dalam kilometer:

SELECT
    mt1.ID,
    mt1.Kilometers,
    mt1.date,
    mt1.Kilometers - IFNULL(mt2.Kilometers, 0) AS number_km_since_last_date   
FROM
    myTable mt1
    LEFT JOIN myTable mt2
        ON mt2.Date = (
            SELECT MAX(Date)
            FROM myTable mt3
            WHERE mt3.Date < mt1.Date
        )
ORDER BY mt1.date

Penyelesaian Alternatif:

Kaedah lain melibatkan meniru fungsi lag() menggunakan hackiness MySQL:

SET @kilo=0;

SELECT
    mt1.ID,
    mt1.Kilometers - @kilo AS number_km_since_last_date,
    @kilo := mt1.Kilometers Kilometers,
    mt1.date
FROM myTable mt1
ORDER BY mt1.date

Keputusan:

Kedua-dua kaedah berjaya mengira perbezaan dalam kilometer antara baris berturut-turut dalam jadual yang diisih, menghasilkan paparan yang memberikan maklumat tambahan yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Antara Baris dalam Pernyataan SELECT MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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