Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Fungsi Agregat dengan Betul dalam Klausa WHERE?
Bagaimanakah Menggunakan Fungsi Agregat dalam Klausa WHERE dengan Betul?
Ralat ini, "Penggunaan fungsi kumpulan tidak sah," berlaku apabila fungsi agregat (seperti AVG() dalam kes ini) digunakan secara salah dalam klausa WHERE. Fungsi agregat meringkaskan sekumpulan nilai dan ia tidak boleh digunakan secara langsung dalam klausa WHERE.
Untuk menyelesaikan isu ini, terdapat dua pilihan:
Menggunakan Subquery dalam WHERE Klausa:
select * from staff where salary > (select avg(salary) from staff)
Dalam contoh ini, subquery (pilih avg(gaji) daripada kakitangan) mengira gaji purata dan menyerahkannya kepada pembolehubah sementara. Klausa WHERE kemudiannya membandingkan gaji setiap kakitangan dengan nilai purata ini.
Menggunakan Klausa HAVING dengan GROUP BY:
select deptid, COUNT(*) as TotalCount from staff group by deptid having COUNT(*) > 2
Dalam contoh ini, Klausa HAVING digunakan untuk menentukan syarat bagi kumpulan mengikut deptid. Klausa HAVING di sini menyemak sama ada kiraan kakitangan dalam setiap jabatan adalah lebih daripada 2. Ambil perhatian bahawa HAVING digunakan dengan GROUP BY untuk melakukan pengiraan pada baris berkumpulan.
Menggunakan salah satu daripada kaedah ini memastikan agregat fungsi digunakan dengan sewajarnya dan hasil yang betul dikembalikan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Fungsi Agregat dengan Betul dalam Klausa WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!