Rumah >pangkalan data >tutorial mysql >Mengapakah 'pilih* daripada kakitangan di mana gaji > purata(gaji)' Mengembalikan 'RALAT 1111 (HY000): Penggunaan Fungsi Kumpulan Tidak Sah'?

Mengapakah 'pilih* daripada kakitangan di mana gaji > purata(gaji)' Mengembalikan 'RALAT 1111 (HY000): Penggunaan Fungsi Kumpulan Tidak Sah'?

Barbara Streisand
Barbara Streisandasal
2024-12-24 07:47:36262semak imbas

Why Does avg(gaji)" Kembalikan "ERROR 1111 (HY000): Penggunaan Fungsi Kumpulan Tidak Sah"? " /> avg(gaji)" Kembalikan "ERROR 1111 (HY000): Penggunaan Fungsi Kumpulan Tidak Sah"? " />

Menyelesaikan masalah "RALAT 1111 (HY000): Penggunaan Fungsi Kumpulan Tidak Sah"

Percubaan untuk menyenaraikan kakitangan yang memperoleh gaji melebihi purata menggunakan pertanyaan "pilih* daripada kakitangan di mana gaji > avg(gaji)" mengembalikan "ERROR 1111 (HY000): Penggunaan fungsi kumpulan tidak sah." Isu ini timbul disebabkan oleh penggunaan fungsi agregat yang salah dalam klausa WHERE.

Mengatasi Ralat< ;/h3>

Fungsi agregat, seperti AVG() dalam kes ini, tidak boleh digunakan dalam klausa WHERE melainkan syarat tertentu dipenuhi Menurut piawaian SQL, agregat boleh muncul dalam klausa WHERE jika ia digunakan dalam subkueri dengan klausa HAVING atau senarai pilih. lajur agregat ialah rujukan luar.

Menggunakan Klausa WHERE Subquery

Untuk menangani ralat, tulis semula pertanyaan menggunakan subquery dalam klausa WHERE:

select *
from staff
where salary > (select avg(salary) from staff)

Pertanyaan ini menggunakan subquery untuk mengira purata gaji, yang kemudiannya berbanding dengan gaji setiap kakitangan.

Menggunakan HAVING Klausa

Sebagai alternatif, pertimbangkan untuk menggunakan klausa HAVING untuk menapis data agregat:

select deptid,COUNT(*) as TotalCount
from staff
group by deptid
having count(*) > 2

Klausa HAVING dalam pertanyaan ini mengehadkan keputusan kepada jabatan yang mempunyai lebih daripada dua kakitangan .

Atas ialah kandungan terperinci Mengapakah 'pilih* daripada kakitangan di mana gaji > purata(gaji)' Mengembalikan 'RALAT 1111 (HY000): Penggunaan Fungsi Kumpulan Tidak Sah'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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