Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membuat Pertanyaan untuk Baris Di Mana Jumlah Nilai Sebelumnya Melebihi Ambang dalam MySQL?

Bagaimana untuk Membuat Pertanyaan untuk Baris Di Mana Jumlah Nilai Sebelumnya Melebihi Ambang dalam MySQL?

Susan Sarandon
Lepaskan: 2024-11-05 01:35:01
asal
440 orang telah melayarinya

How to Query for Rows Where the Sum of Previous Values Exceeds a Threshold in MySQL?

Menyiasat dengan SUM() dalam MySQL WHERE Klausa

Apabila bekerja dengan jadual MySQL, mungkin perlu untuk mendapatkan semula baris berdasarkan pengiraan agregat , seperti jumlah nilai sebelumnya. Walau bagaimanapun, menggunakan SUM() terus dalam klausa WHERE mungkin tidak menghasilkan hasil yang dijangkakan.

Andaikan anda mempunyai jadual dengan lajur "id" dan "tunai":

id | cash
1    200
2    301
3    101
4    700
Salin selepas log masuk

Untuk mendapatkan semula baris pertama di mana jumlah semua tunai sebelumnya melebihi nilai tertentu (cth., 500), menggunakan WHERE SUM(tunai) > 500 tidak akan berfungsi seperti yang diharapkan.

Penyelesaian Menggunakan Klausa HAVING

MySQL membenarkan perbandingan agregat dalam klausa HAVING dan bukannya klausa WHERE. Untuk mencapai hasil yang diingini, anda boleh menggunakan pertanyaan berikut:

GROUP BY ...
HAVING SUM(cash) > 500
Salin selepas log masuk

Walau bagaimanapun, ini memerlukan penentuan klausa GROUP BY, yang mungkin tidak diperlukan.

Menggunakan Nested Subquery dengan Running Total

Pendekatan alternatif ialah menggunakan subquery bersarang untuk mengira jumlah berjalan dan kemudian membandingkannya dengan nilai yang ditentukan dalam klausa WHERE:

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

In pertanyaan ini, subkueri digunakan untuk mengira jumlah berjalan bagi setiap baris dalam jadual. Alias ​​running_total digunakan untuk merujuk nilai ini dalam klausa WHERE. Klausa LIMIT ditambah untuk mengembalikan hanya baris pertama yang sepadan dengan syarat.

Pendekatan ini membenarkan perbandingan langsung nilai agregat dalam klausa WHERE dan menghasilkan hasil yang diingini tanpa memerlukan klausa GROUP BY.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Pertanyaan untuk Baris Di Mana Jumlah Nilai Sebelumnya Melebihi Ambang 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