Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengira Jumlah Terkumpul dengan Cekap dalam MySQL?

Bagaimanakah Saya Boleh Mengira Jumlah Terkumpul dengan Cekap dalam MySQL?

Barbara Streisand
Lepaskan: 2025-01-05 16:15:40
asal
637 orang telah melayarinya

How Can I Efficiently Calculate Cumulative Sums in MySQL?

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:

  1. Mulakan pembolehubah pengguna untuk mengelakkan gangguan daripada nilai sesi sedia ada.
  2. Benamkan pertanyaan asal sebagai paparan sebaris dengan klausa ORDER BY.
  3. Lakukan pengiraan jumlah terkumpul dalam penyata SELECT, membandingkan baris sebelumnya dan semasa nilai.
  4. Tetapkan nilai baris semasa kepada pembolehubah pengguna untuk lelaran seterusnya.

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
Salin selepas log masuk

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!

sumber:php.cn
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