Heim >Datenbank >MySQL-Tutorial >Warum gibt „aus Personal auswählen* mit Gehalt > Durchschnitt(Gehalt)' „FEHLER 1111 (HY000): Ungültige Verwendung der Gruppenfunktion' zurück?

Warum gibt „aus Personal auswählen* mit Gehalt > Durchschnitt(Gehalt)' „FEHLER 1111 (HY000): Ungültige Verwendung der Gruppenfunktion' zurück?

Barbara Streisand
Barbara StreisandOriginal
2024-12-24 07:47:36265Durchsuche

Why Does avg(salary)“ Rückgabe „FEHLER 1111 (HY000): Ungültige Verwendung der Gruppenfunktion“? " /> avg(salary)" Rückgabe „FEHLER 1111 (HY000): Ungültige Verwendung der Gruppenfunktion“? " />

Fehlerbehebung „FEHLER 1111 (HY000): Ungültige Verwendung der Gruppenfunktion“

Ein Versuch, Mitarbeiter, die über dem Durchschnittsgehalt verdienen, mithilfe von aufzulisten Abfrage „Wählen Sie* aus dem Personal aus, bei dem das Gehalt > avg(salary)“ gibt „FEHLER 1111 (HY000): Ungültige Verwendung der Gruppenfunktion“ zurück. Dieses Problem tritt aufgrund der falschen Verwendung einer Aggregatfunktion in der WHERE-Klausel auf.

Behebung des Fehlers< ;/h3>

Eine Aggregatfunktion, wie in diesem Fall AVG(), kann in der WHERE-Klausel nicht verwendet werden Sofern keine spezifischen Bedingungen erfüllt sind, können Aggregate in der WHERE-Klausel erscheinen, wenn sie in einer Unterabfrage mit einer HAVING-Klausel oder einer Auswahlliste verwendet werden und die aggregierte Spalte eine äußere Referenz ist.

Verwenden der WHERE-Klausel-Unterabfrage

Um den Fehler zu beheben, schreiben Sie die Abfrage mithilfe einer Unterabfrage in um WHERE-Klausel:

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

Diese Abfrage verwendet eine Unterabfrage, um das Durchschnittsgehalt zu berechnen, das dann mit dem Gehalt jedes Mitarbeiters verglichen wird.

Verwendung der HAVING-Klausel< /h4>

Erwägen Sie alternativ die Verwendung der HAVING-Klausel, um das Aggregat zu filtern Daten:

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

Die HAVING-Klausel in dieser Abfrage beschränkt die Ergebnisse auf Abteilungen mit mehr als zwei Mitarbeitern.

Das obige ist der detaillierte Inhalt vonWarum gibt „aus Personal auswählen* mit Gehalt > Durchschnitt(Gehalt)' „FEHLER 1111 (HY000): Ungültige Verwendung der Gruppenfunktion' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn