Mendapatkan Kembali Baris Pertama dengan Jumlah Tunai Sebelumnya Melebihi Had Menggunakan MySQL
Definisi Masalah:
Memandangkan jadual dengan id lajur dan wang tunai, tugasnya adalah untuk mendapatkan semula baris pertama di mana jumlah terkumpul wang tunai dalam baris sebelumnya melebihi nilai yang ditentukan. Sebagai contoh, jika had yang diingini ialah 500, fungsi harus mengembalikan baris ketiga di mana jumlah terkumpul wang tunai mencapai lebih 500.
Penyelesaian MySQL:
Semasa mencuba untuk membandingkan agregat dalam klausa WHERE (cth., WHERE SUM(tunai) > 500) terbukti tidak berjaya, klausa HAVING boleh digunakan untuk membandingkan agregat. Walau bagaimanapun, klausa HAVING memerlukan klausa GROUP BY yang sepadan.
Untuk menyelesaikannya, pertanyaan berikut boleh digunakan:
SELECT y.id, y.cash FROM ( SELECT t.id, t.cash, ( SELECT SUM(x.cash) FROM TABLE x WHERE x.id <= t.id ) AS running_total FROM TABLE t ORDER BY t.id ) y WHERE y.running_total > 500 ORDER BY y.id LIMIT 1
Pertanyaan ini menggunakan subkueri untuk mengira jumlah terkumpul tunai untuk setiap baris, yang disimpan dalam alias lajur running_total. Dengan merujuk lajur running_total dalam klausa WHERE, baris pertama yang jumlah kumulatif melebihi had yang ditentukan boleh diambil semula. Klausa LIMIT 1 memastikan bahawa hanya baris pertama tersebut dikembalikan.
Atas ialah kandungan terperinci Bagaimana Mencari Baris Pertama Di Mana Jumlah Tunai Terkumpul Melebihi Had dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!