Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Jumlah Berjalan dalam Versi MySQL Sebelum 8.0?

Bagaimana untuk Mengira Jumlah Berjalan dalam Versi MySQL Sebelum 8.0?

Barbara Streisand
Lepaskan: 2025-01-02 22:51:38
asal
902 orang telah melayarinya

How to Calculate Running Totals in MySQL Versions Prior to 8.0?

Mengira Jumlah Terkumpul atas Set Baris dalam MySQL

Anda berhadapan dengan tugas untuk mendapatkan agregat berjalan untuk lajur tertentu merentas set baris dalam MySQL. Cabarannya terletak pada kekurangan fungsi analitik terbina dalam dalam MySQL sebelum versi 8.0.

Pendekatan Menggunakan Pembolehubah Pengguna

Dalam situasi ini, anda boleh menggunakan pembolehubah pengguna untuk meniru kefungsian fungsi analitik. Ini melibatkan membungkus pertanyaan asal anda dalam pertanyaan lain dan menggunakan ORDER BY untuk memproses baris secara berurutan.

Pertanyaan luar menyemak sama ada nilai baris semasa untuk id dan hari sepadan dengan nilai baris sebelumnya. Jika ya, jumlah terkumpul dikemas kini dengan menambah jumlah daripada baris semasa. Jika tidak, jumlah kumulatif ditetapkan semula dan ditetapkan kepada jumlah baris semasa.

Contoh Pertanyaan

Berikut ialah contoh pertanyaan yang menunjukkan 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
              , @subtotal := 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
Salin selepas log masuk

Dengan membungkus keseluruhan pertanyaan ini dalam kurungan dan menggunakannya sebagai paparan sebaris, anda boleh menyusun semula lajur seperti yang dikehendaki:

SELECT d.id
     , d.day
     , d.hr
     , d.amount
     , d.cumulative_total
FROM (
       // query from above
     ) d
Salin selepas log masuk

Penghadan

Perlu diingat bahawa pendekatan ini boleh menjadi intensif secara pengiraan untuk set data yang besar. Selain itu, jika predikat dalam pertanyaan asal adalah kompleks, ia boleh meningkatkan lagi kerumitan penyelesaian.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Berjalan dalam Versi MySQL Sebelum 8.0?. 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