Erläuterung der Verwendung von GROUP BY in gruppierten Abfragen und der SQL-Ausführungsreihenfolge

Erläuterung der Verwendung von GROUP BY in gruppierten Abfragen und der SQL-Ausführungsreihenfolge

In SQL wird GROUP BY verwendet, um Daten in den Ergebnissen von SELECT zu gruppieren. Bevor Sie GROUP BY verwenden, müssen Sie einige wichtige Regeln kennen.

  • 1. Die GROUP BY-Klausel kann eine beliebige Anzahl von Spalten enthalten. Dies bedeutet, dass Sie Daten innerhalb von Gruppen gruppieren können, was eine detailliertere Kontrolle über die Datengruppierung ermöglicht.
  • 2. Wenn Sie in der GROUP BY-Klausel mehrere Gruppen angeben, werden die Daten auf der zuletzt angegebenen Gruppe aggregiert.
  • 3. Jede in der GROUP BY-Klausel aufgelistete Spalte muss eine Suchspalte oder ein gültiger Ausdruck sein (aber keine Aggregatfunktion). Wenn in der SELECT-Anweisung ein Ausdruck verwendet wird, muss derselbe Ausdruck in der GROUP BY-Klausel angegeben werden. Aliase können nicht verwendet werden.
  • 4. Mit Ausnahme der Anweisung zur Aggregatberechnung muss jede Spalte in der SELECT-Anweisung in der GROUP BY-Klausel angegeben werden.
  • 5. Wenn in der Gruppierungsspalte ein NULL-Wert vorhanden ist, wird NULL als Gruppe zurückgegeben. Wenn mehrere Zeilen NULL-Werte enthalten, werden sie gruppiert.
  • 6. Die GROUP BY-Klausel muss nach der WHERE-Klausel und vor der ORDER BY-Klausel stehen.

Filtergruppen

Übermäßiger Gebrauch der HAVING-Klausel zur Gruppierung. Die HAVING-Klausel unterstützt alle WHERE-Operationen. Der Unterschied zwischen HAVING und WHERE besteht darin, dass WHERE Zeilen filtert, während HAVING zum Filtern von Gruppen verwendet wird.

Der Unterschied zwischen WHERE und HAVING lässt sich auch dadurch verstehen, dass WHERE vor der Gruppierung filtert, während HAVING nach der Gruppierung gruppenweise filtert.

Gruppieren und Sortieren

Wenn Sie die GROUP BY-Klausel verwenden, sollten Sie im Allgemeinen auch die ORDER BY-Klausel verwenden. Nur so ist gewährleistet, dass die Daten richtig sortiert werden.

Die Ausführungsreihenfolge der SQL SELECT-Anweisung ist:

  • 1. Die From-Klausel fasst Daten aus verschiedenen Datenquellen zusammen;
  • 2. Die Where-Klausel filtert die Zeilen basierend auf den angegebenen Bedingungen;
  • 3. Die Group-By-Klausel unterteilt die Daten in mehrere Gruppen.
  • 4. Verwenden Sie Aggregatfunktionen für Berechnungen;
  • 5. Verwenden Sie die Having-Klausel, um Gruppen zu filtern.
  • 6. Berechnen Sie alle Ausdrücke;
  • 7. Verwenden Sie „order by“, um den Ergebnissatz zu sortieren.
  • 8. Wählen Sie die Sammlungsausgabe aus.

Lassen Sie mich Ihnen ein Beispiel geben.

Wählen Sie den Namen des Kandidaten und max(Gesamtpunktzahl) als maximale Gesamtpunktzahl aus tb_Grade
wobei der Name des Kandidaten nicht null ist
Gruppieren nach Kandidatennamen mit max(Gesamtpunktzahl) > 600
Sortieren nach maximaler Gesamtpunktzahl

Im obigen Beispiel werden die SQL-Anweisungen in der folgenden Reihenfolge ausgeführt:

  • 1. Führen Sie zunächst die FROM-Klausel aus, um die Datenquellendaten aus der Tabelle tb_Grade zusammenzustellen
  • 2. Führen Sie die WHERE-Klausel aus, um alle Daten in der Tabelle tb_Grade zu filtern, die nicht NULL sind
  • 3. Führen Sie die GROUP BY-Klausel aus, um die Tabelle tb_Grade nach der Spalte „Student Name“ zu gruppieren
  • 4. Berechnen Sie die Aggregatfunktion max () und ermitteln Sie den größten Wert in der Gesamtpunktzahl gemäß der "Gesamtpunktzahl".
  • 5. Führen Sie die HAVING-Klausel aus, um Kurse mit einer Gesamtpunktzahl von über 600 Punkten zu filtern.
  • 6. Führen Sie die ORDER BY-Klausel aus und sortieren Sie die Endergebnisse nach „Max. Punktzahl“.

Hinweis: Wenn „join“ und „on“ verwendet werden, wird „on“ vor „where“ ausgeführt, dann wird „join“ ausgeführt und dann wird „where“ ausgeführt.

Anhang:

Aggregatfunktionen in MySQL:

  • 1. count() gibt die Anzahl der Zeilen in einer Spalte zurück
  • 2. avg() gibt den Durchschnittswert einer Spalte zurück
  • 3. max() gibt den Maximalwert einer Spalte zurück
  • 4. min() gibt den Minimalwert einer Spalte zurück
  • 5. sum() gibt die Summe einer Spalte zurück
  • 6. distinct entfernt doppelte Werte

Hinweis: avg() ignoriert Zeilen mit Nullwerten, count(*) zählt alle Zeilen und count(column) ignoriert Zeilen mit Nullwerten

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Detailliertes Tutorial zur Verwendung von Group By in SQL
  • Laravel implementiert die Gruppenabfrage des Eloquent-Modells und gibt die Nummer jeder Gruppe groupBy() zurück
  • Implementierungsdetails für Django ORM-Aggregatabfragen und Gruppenabfragen
  • Detaillierte Erläuterung des Implementierungsprinzips der MySQL-Gruppenabfrage Group By
  • Detaillierte Erläuterung der Gruppenabfrage- und Join-Abfrageanweisungen in MySQL
  • SQL-Gruppenabfrageproblem
  • Detaillierte Erläuterung der Nutzungsregeln von „group by“ in der Oracle-Gruppenabfrage

<<:  Detaillierte grafische Erklärung zur Installation der MySQL-Datenbank und zur Konfiguration eines Java-Projekts unter Linux

>>:  Eine kurze Erläuterung des Lazy-Loading-Attributmusters in JavaScript

Artikel empfehlen

Implementierungsmethode und Beispielcode des Tomcat-Klassenladers

Tomcat definiert intern mehrere ClassLoader, soda...

Docker-Bereinigungsumgebungsvorgang

Beginnen Sie vorsichtig mit der Reinigung! Auflis...

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

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

Detaillierte Erklärung der Mencached-Cache-Konfiguration basierend auf Nginx

Einführung Memcached ist ein verteiltes Caching-S...

Beispielcode zur Implementierung eines 3D-Text-Hover-Effekts mit CSS3

In diesem Artikel wird der Beispielcode von CSS3 ...

Implementierung des MySQL Shell import_table-Datenimports

Inhaltsverzeichnis 1. Einführung in import_table ...

Der Nginx-Reverseproxy leitet Anfragen von Port 80 an 8080 weiter.

Lassen Sie uns zunächst eine Reihe von Konzepten ...

Detaillierte Erklärung von MySQL Explain

Bei unserer täglichen Arbeit führen wir manchmal ...

So löschen Sie eine MySQL-Tabelle

Das Löschen einer Tabelle in MySQL ist sehr einfa...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15

In diesem Artikel werden die Installations- und K...