Mengira Jumlah Berjalan dengan Cekap dalam MySQL dengan Satu Pertanyaan
Panduan ini menunjukkan satu pertanyaan MySQL untuk mengira jumlah berjalan bagi kiraan pesanan harian, dengan mengandaikan data anda termasuk lajur date
dan bendera hasPaid
yang menunjukkan pembayaran berjaya.
Berikut ialah pertanyaan yang dioptimumkan:
<code class="language-sql">SET @runtot:=0; SELECT DATE(`date`) AS d, COUNT(*) AS c, (@runtot := @runtot + COUNT(*)) AS rt FROM `orders` WHERE `hasPaid` > 0 GROUP BY d ORDER BY d;</code>
Pertanyaan ini memulakan pembolehubah @runtot
kepada sifar. Logik teras kemudian mengira kiraan pesanan harian (COUNT(*) AS c
) dan pada masa yang sama mengemas kini jumlah berjalan (@runtot := @runtot COUNT(*) AS rt
) dalam satu pernyataan SELECT
. Ini mengelakkan keperluan untuk subkueri atau hantaran berbilang, menghasilkan kecekapan yang lebih baik. GROUP BY d
kumpulan klausa terhasil mengikut hari dan ORDER BY d
memastikan jumlah larian dikira secara berurutan. Kaedah ini cekap menjana jumlah lajur berjalan (rt
) bersama-sama kiraan pesanan harian (c
) dan hari (d
).
Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Berjalan dalam MySQL dengan Satu Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!