Heim >Datenbank >MySQL-Tutorial >Warum wird „* aus Mitarbeitern auswählen, bei denen das Gehalt > Durchschnitt(Gehalt);' ist? Scheitern, und wie kann ich Mitarbeiter mit einem überdurchschnittlichen Verdienst richtig finden?

Warum wird „* aus Mitarbeitern auswählen, bei denen das Gehalt > Durchschnitt(Gehalt);' ist? Scheitern, und wie kann ich Mitarbeiter mit einem überdurchschnittlichen Verdienst richtig finden?

DDD
DDDOriginal
2024-12-24 22:47:15317Durchsuche

Why Does avg(salary);“ schlägt fehl und wie kann ich Mitarbeiter mit einem überdurchschnittlichen Einkommen richtig finden? " /> avg(gehalt);" Scheitern, und wie kann ich Mitarbeiter mit einem überdurchschnittlichen Verdienst richtig finden? " />

Eine eingehende Untersuchung von „FEHLER 1111 (HY000): Ungültige Verwendung der Gruppenfunktion“

Diese Abfrage zielt darauf ab, Mitarbeiter zu identifizieren, die mehr verdienen als das durchschnittliche Gehalt in einer Personaltabelle, die Attribute wie ec, Name, Code, Dob und Gehalt enthält Lösung:

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

schlägt aufgrund einer ungültigen Verwendung der Gruppenfunktion innerhalb der WHERE-Klausel fehl. Aggregatfunktionen wie AVG können nicht direkt in WHERE-Klauseln verwendet werden, es sei denn, sie sind in einer Unterabfrage innerhalb eines HAVING enthalten Klausel oder eine Auswahlliste, und die Spalte, die aggregiert wird, ist eine äußere Referenz.

Richtig Ansätze:

Verwendung einer Unterabfrage in der WHERE-Klausel:

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

Verwendung einer HAVING-Klausel:

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

Die HAVING-Klausel ermöglicht das Filtern basierend auf Gruppen- oder Aggregatwerten und verhält sich Ähnlich einer WHERE-Klausel in Fällen ohne GROUP BY. Durch die Verschiebung der Aggregatfunktion in die HAVING-Klausel identifiziert die Abfrage korrekt Mitarbeiter, deren Gehalt über dem Durchschnitt liegt.

Das obige ist der detaillierte Inhalt vonWarum wird „* aus Mitarbeitern auswählen, bei denen das Gehalt > Durchschnitt(Gehalt);' ist? Scheitern, und wie kann ich Mitarbeiter mit einem überdurchschnittlichen Verdienst richtig finden?. 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