Jumlah Terkumpul atas Baris dalam MySQL
Untuk menentukan jumlah terkumpul bagi setiap id, dikumpulkan mengikut jam dalam sehari, pendekatan biasa digunakan dalam MySQL. Disebabkan ketiadaan fungsi analitik dalam versi MySQL yang lebih awal, dua kaedah utama digunakan: subkueri berkorelasi atau pembolehubah pengguna MySQL.
Pendekatan Subkueri Berkorelasi
Strategi ini melibatkan subkueri yang mengira jumlah kumulatif untuk setiap baris, berdasarkan kriteria padanan. Walau bagaimanapun, ia boleh menjadi intensif sumber untuk set data yang banyak.
Pendekatan Pembolehubah Pengguna
Kaedah yang lebih cekap melibatkan pembolehubah pengguna MySQL dan pertanyaan yang dibungkus dengan klausa ORDER BY untuk memastikan urutan pemprosesan baris. Langkah berikut menggariskan pendekatan ini:
Contoh pendekatan ini:
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 ( // Original query with multiple joins and unions ) a LEFT JOIN ( // Unions on multiple tables ) b ON a.id = b.id ORDER BY 1, 2, 3 ) c
Pendekatan ini membolehkan kecekapan pengiraan jumlah kumulatif dalam versi MySQL sebelum 8.0, apabila fungsi tetingkap diperkenalkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Jumlah Terkumpul dengan Cekap dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!