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
Freigeben: 2024-12-24 22:47:15
Original
312 Leute haben es durchsucht

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);
Nach dem Login kopieren

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)
Nach dem Login kopieren

Verwendung einer HAVING-Klausel:

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

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage