Detaillierte Erklärung von Group By und Having in MySQL

Detaillierte Erklärung von Group By und Having in MySQL

Mit der GROUP BY-Syntax können die Abfrageergebnisse entsprechend den einzelnen Mitgliedern einer bestimmten Datenspalte gruppiert und gezählt und schließlich eine Gruppenzusammenfassungstabelle erstellt werden.

Der Spaltenname in der Select-Klausel muss eine Gruppierungsspalte oder eine Spaltenfunktion sein, die für jede durch die Group-By-Klausel definierte Gruppe ein Ergebnis zurückgibt.

Der Aufbau und die Daten einer Mitarbeiterinformationstabelle sind wie folgt:

  ID Name Abteilung Gehalt Bildungsstufe Einstellungsdatum 
  1 Zhang San Entwicklungsabteilung 2000 3 2009-10-11
  2 Li Si Entwicklungsabteilung 2500 3 2009-10-01
  3 Wang Wu Designabteilung 2600 5 2010-10-02
  4 Wang Liu Designabteilung 2300 4 2010-10-03
  5 Maqi Designabteilung 2100 4 2010-10-06
  6 Zhao Ba Verkaufsabteilung 3000 5 2010-10-05
  7 Qianjiu Verkaufsabteilung 3100 7 2010-10-07
  8 Sun Ten Verkaufsabteilung 3500 7 2010-10-06

Ich möchte das höchste Gehalt jeder Abteilung auflisten. Die SQL-Anweisung lautet wie folgt:

Wählen Sie Abteilung, Max (Gehalt) als Maximum
VON MITARBEITERN
GRUPPE NACH ABTEILUNG

Die Abfrageergebnisse lauten wie folgt:

Abt. MAXIMAL
Entwicklungsabteilung 4500
Konstruktionsabteilung 2600
Verkaufsabteilung 3500

Erklären Sie dieses Ergebnis:

1. „Der Spaltenname in der SELECT-Klausel muss eine Gruppierungsspalte oder eine Spaltenfunktion sein“ ist erfüllt, da die SELECT-Klausel eine in „group by“ enthaltene Spalte „dept“ enthält.

2. „Die Spaltenfunktion gibt für jede durch die Group-By-Klausel definierte Gruppe ein Ergebnis zurück.“ Entsprechend der Abteilungsgruppierung wird für jede Abteilung ein Ergebnis zurückgegeben, das dem höchsten Gehalt der jeweiligen Abteilung entspricht.

Verwenden der Where-Klausel mit der Group By-Klausel

Gruppierte Abfragen können eine standardmäßige Where-Klausel haben, die nicht qualifizierte Zeilen eliminiert, bevor die Gruppen und berechneten Spaltenfunktionen gebildet werden. Die Where-Klausel muss vor der Group-By-Klausel angegeben werden.

Fragen Sie beispielsweise nach dem höchsten Gehalt jeder Abteilung und jeder Ebene des Unternehmens, das 2010 eingetreten ist

SELECT dept,edlevel,MAX(Gehalt) AS MAXIMUM
VON MITARBEITERN
WO Einstellungsdatum > '01.01.2010'
GROUP BY Abteilung, Bildungsstufe

Die Abfrageergebnisse lauten wie folgt:

Abteilungsebene MAXIMAL
Konstruktionsabteilung 4 2300
Konstruktionsabteilung 5 2600
Verkaufsabteilung 5 3000
Verkaufsabteilung 7 3500

Jeder in der SELECT-Anweisung angegebene Spaltenname wird auch in der GROUP BY-Klausel erwähnt. Spaltennamen, die nicht an beiden Stellen erwähnt werden, erzeugen einen Fehler. Die GROUP BY-Klausel gibt für jede eindeutige Kombination aus „dept“ und „edlevel“ eine Zeile zurück.

Verwenden der Having-Klausel nach der GROUP BY-Klausel

Sie können Gruppierungen qualifizieren, sodass nur Ergebnisse für Gruppen zurückgegeben werden, die die Kriterien erfüllen. Daher wird nach der GROUP BY-Klausel eine HAVING-Klausel eingefügt. HAVING ist ähnlich wie WHERE (der einzige Unterschied besteht darin, dass WHERE Zeilen filtert, während HAVING Gruppen filtert). HAVING unterstützt alle WHERE-Operatoren.

So ermitteln Sie beispielsweise die höchsten und niedrigsten Gehälter für Abteilungen mit mehr als 2 Mitarbeitern:

SELECT dept ,MAX(Gehalt) AS MAXIMUM ,MIN(Gehalt) AS MINIMUM
VON MITARBEITERN
GROUP BY-Abteilung
MIT ANZAHL(*) > 2
BESTELLEN NACH Abteilung

Die Abfrageergebnisse lauten wie folgt:

Abt. MAXIMAL MINIMUM
Konstruktionsabteilung 2600 2100
Verkaufsabteilung 3500 3000

So ermitteln Sie beispielsweise die höchsten und niedrigsten Gehälter in Abteilungen, in denen das Durchschnittsgehalt der Mitarbeiter über 3000 liegt:

SELECT dept,MAX(Gehalt) AS MAXIMUM,MIN(Gehalt) AS MINIMUM
VON MITARBEITERN
GROUP BY-Abteilung
MIT DURCHSCHNITTLICHEM (Gehalt) > 3000
BESTELLEN NACH Abteilung

Die Abfrageergebnisse lauten wie folgt:

Abt. MAXIMAL MINIMUM
Verkaufsabteilung 3500 3000

Dies ist das Ende dieses Artikels über die detaillierte Verwendung von MySQL Group by und Having. Weitere relevante MySQL Group by-Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Group-By-Anweisung in der MySQL-Datenbankgruppenabfrage
  • MySQL effiziente Abfrage Left Join und Gruppieren nach (plus Index)
  • Detaillierte Erklärung der MySQL-Gruppierung durch Optimierung
  • So optimieren Sie MySQL-Gruppen nach Anweisungen
  • So verwenden Sie MySQL „group by“ und „order by“ gemeinsam
  • MySQL-Gruppe durch Gruppieren mehrerer Felder
  • Implementieren Sie Group By basierend auf MySQL, um die neuesten Daten jeder Gruppe zu erhalten
  • Eine kurze Erläuterung zu „Group By“ in MySQL

<<:  Linux-Betrieb und -Wartung – Tutorial zur grundlegenden Datenträgerverwaltung

>>:  Implementierungscode zur Verwendung von CSS-Texthervorhebung zum Hervorheben von Text

Artikel empfehlen

So erstellen Sie eine monatliche Tabelle in einer gespeicherten MySQL-Prozedur

Lassen Sie uns, ohne ins Detail zu gehen, direkt ...

Beispielcode zum Hervorheben von Suchbegriffen im WeChat-Miniprogramm

1. Einleitung Wenn Sie im Projekt auf eine Anford...

Der Unterschied zwischen ${param} und #{param} in MySQL

Der von ${param} übergebene Parameter wird als Te...

Verwendung des Linux-Befehls „sar“ und Analyse von Codebeispielen

1. CPU-Auslastung sar -p (den ganzen Tag anzeigen...

Implementierung der Docker-Bereitstellung von Tomcat- und Webanwendungen

1. Docker online herunterladen yum install -y epe...

Einführung in die JWT-Verifizierung mit Nginx und Lua

Inhaltsverzeichnis Vorwort Lua-Skript nignx.conf-...

Wie stellt MySQL eine Verbindung zum entsprechenden Clientprozess her?

Frage Wie können wir bei einer bestimmten MySQL-V...

3 Tipps, die Sie beim Erlernen von JavaScript kennen müssen

Inhaltsverzeichnis 1. Der magische Erweiterungsop...

Grundkenntnisse der MySQL-Datenbank

Inhaltsverzeichnis 1. Datenbanken verstehen 1.1 D...