Jumlah Terkumpul dalam MySQL tanpa SET
Dalam MySQL, ketiadaan fungsi analitik seperti jumlah kumulatif memberikan cabaran apabila cuba mengira jumlah berjalan . Walau bagaimanapun, terdapat dua pendekatan untuk mencontohi fungsi ini.
Subkueri Berkaitan
Pendekatan ini menggunakan subkueri dalam pertanyaan utama untuk mendapatkan jumlah terkumpul. Walau bagaimanapun, ia boleh menjadi intensif sumber dan kompleks, terutamanya apabila berurusan dengan gabungan yang rumit.
Pembolehubah Pengguna
Sebagai alternatif, pembolehubah pengguna MySQL boleh dimanfaatkan untuk melakukan pemecahan kawalan pemprosesan. Kaedah ini melibatkan pengisihan hasil pertanyaan asal dan membungkusnya dalam pertanyaan luar.
Dalam pertanyaan luar:
Logik berikut digunakan:
Pembolehubah pengguna dikemas kini dengan id semasa dan nilai hari selepas pengiraan.
Contoh Pertanyaan
SELECT IF(@prev_id = c.id AND @prev_day = c.day, @cumtotal := @cumtotal + c.amount, @cumtotal := c.amount) AS cumulative_total, @prev_id := c.id AS `id`, @prev_day := c.day AS `day`, c.hr, c.amount AS `amount` FROM ( SELECT @prev_id := NULL, @prev_day := NULL, @cumtotal := 0 ) i JOIN ( select id, day, hr, amount from ( //multiple joins on multiple tables)a left join (//unions on multiple tables)b on a.id=b.id ORDER BY 1,2,3 ) c
Jika susunan lajur perlu diubah:
SELECT d.id, d.day, d.hr, d.amount, d.cumulative_total FROM ( // query from above ) d
Pendekatan ini ialah sesuai untuk versi MySQL sebelum 8.0 dan boleh menyediakan penyelesaian yang cekap untuk mengira jumlah terkumpul ke atas satu set baris.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Kumulatif dalam MySQL Tanpa Menggunakan Fungsi Analitik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!