MySQL-Anfänger können sich von den Problemen der Gruppierungs- und Aggregationsabfragen verabschieden

MySQL-Anfänger können sich von den Problemen der Gruppierungs- und Aggregationsabfragen verabschieden

1. Schematische Darstellung der Gruppenabfrage

Bildbeschreibung hier einfügen

Gruppieren Sie die obigen Rohdaten nach DEPARTMENT_ID (Mitarbeiter-ID) und berechnen Sie den Durchschnittswert von SALARY (Gehalt).

Bildbeschreibung hier einfügen

Wie sollte das obige Prinzip in Code geschrieben werden?

wählen 
	Abteilungs-ID, Durchschnitt (Gehalt)
aus 
	prüfen
Gruppieren nach 
	Abteilungs-ID;

Es ist deutlich zu erkennen, dass das System nach der Gruppierung nach department_id standardmäßig Zeilen mit derselben department_id zusammenordnet. Wenn Sie mehrere unterschiedliche department_id haben, werden diese in mehrere Gruppen aufgeteilt, und die Anzahl der Datenzeilen in jeder Gruppe muss nicht unbedingt gleich sein.

Wenn die automatische Zuordnung abgeschlossen ist, werden die gruppeninternen Vorgänge gemäß der von Ihnen geschriebenen Gruppierungsfunktion ausgeführt.

Das heißt, wenn Sie die Funktion sum() verwenden, wird die Summe innerhalb der Gruppe berechnet; wenn Sie die Funktion avg() verwenden, wird der Durchschnitt innerhalb der Gruppe berechnet; wenn Sie die Funktion count() verwenden, wird die Zählung innerhalb der Gruppe durchgeführt; wenn Sie die Funktion max() verwenden, wird der Maximalwert innerhalb der Gruppe berechnet; und wenn Sie die Funktion min() verwenden, wird der Minimalwert innerhalb der Gruppe berechnet.

2. Detaillierte Erklärung der Syntax der Gruppierung nach Schlüsselwort

Beim Erlernen von MySQL bleiben viele Neulinge beim group by Schlüsselwörtern hängen. Ich hoffe, dass ich Ihnen mithilfe von Bildern und Texten in der Umgangssprache dabei helfen kann, die Bedeutung dieses Schlüsselworts wirklich zu verstehen.

Bildbeschreibung hier einfügen

group by ist ein Schlüsselwort zum Gruppieren von Abfragen und wird im Allgemeinen mit den Aggregatfunktionen sum(),avg(),count(),max(),min() verwendet. Das heißt, solange in der SQL-Anweisung group by vorhanden ist, werden in der Regel eine oder mehrere der Aggregatfunktionen (5 Aggregatfunktionen) nach der Auswahl in den Anzeigefeldern angezeigt. Wenn Sie sich das obige Bild ansehen, müssen Sie eines bedenken: Nachdem Sie in der Tabelle nach Feld A gruppiert haben, müssen Sie im Allgemeinen Aggregatfunktionen auf andere Felder in der Tabelle anwenden, was sinnvoller ist, als Aggregatfunktionen auf Feld A anzuwenden, was nicht viel Sinn ergibt.

Lassen Sie uns über folgende Frage nachdenken!

Wenn „Group By“ in einer SQL-Anweisung verwendet wird, muss nach der Auswahl ein Feld vorhanden sein, das eine Aggregatfunktion verwendet (5 Aggregatfunktionen). Aber können außer dieser Aggregatfunktion nach „Select“ noch weitere Felder hinzugefügt werden?

Die Antwort ist definitiv ja! Allerdings unterliegt dieses Feld gewissen Einschränkungen und nicht alle Felder können verwendet werden. Dies bedeutet, dass bei Verwendung group by in der SQL-Anweisung die Auswahl, mit Ausnahme der Aggregatfunktion, nur aus den Feldern erfolgen kann, die nach group by erscheinen. Das bedeutet, dass in der Abbildung für Feld A nach „Select“ nur die Felder nach group by vorhanden sein können.

3. Ein einfaches Beispiel für eine Gruppenabfrage

Beispiel: Gruppieren Sie nach der Abteilungsnummer „deptno“ und berechnen Sie das Durchschnittsgehalt jeder Abteilung.

wählen 
    Abteilungsnummer, Durchschnitt (Salz) Durchschnitte
aus 
    emp
Gruppieren nach 
    Abteilung

Die Ergebnisse sind wie folgt:

Bildbeschreibung hier einfügen

4. Screening vor und nach der Gruppierung

Dieser Wissenspunkt soll jedem helfen zu verstehen, warum wir den Where-Filter verwenden sollten. Wann sollte ich einen Having-Filter verwenden? Dieser Wissenspunkt ist auch für MySQL-Anfänger eine heikle Sache. Keine Sorge, es gibt nichts, was Sie nicht lernen können, wenn Sie Herrn Huang folgen, um MySQL zu lernen.

1) Das Konzept der Originaltabelle und des Ergebnissatzes

Mit der Originaltabelle ist die tatsächlich in der Datenbank vorhandene Tabelle gemeint. Die Originaltabelleninformationen werden mit [select * from table name] abgefragt. Als Ergebnismenge wird die Tabelle bezeichnet, die uns nach der Ergänzung etwaiger weiterer Einschränkungsbedingungen im SQL-Statement abschließend angezeigt wird. Das Hinzufügen unterschiedlicher Einschränkungen führt zu unterschiedlichen Abfrageergebnissätzen. Es gibt nur eine Originaltabelle, aber die Ergebnismengen sind unterschiedlich.

2) Huangs toller Rat

Immer wenn in der Anforderung eine Aggregatfunktion als Bedingung vorhanden ist, muss diese nach der Gruppierung gefiltert werden. Wenn eine Vorgruppenuntersuchung möglich ist, sollte dieser Vorrang eingeräumt werden. (Unter Berücksichtigung von Leistungsproblemen)

Bildbeschreibung hier einfügen

3) Fallstudie

Der ursprüngliche Datensatz sieht wie folgt aus:

Bildbeschreibung hier einfügen

① Screening vor der Gruppierung

Übung 1: Ermitteln Sie die Summe der Gehälter aller Abteilungen, deren Name den Buchstaben S enthält.

Bildbeschreibung hier einfügen

Übung 2: Abfrage des Durchschnittsgehalts verschiedener Abteilungen mit einem Gehalt über 2000.

Bildbeschreibung hier einfügen

② Screening nach der Gruppierung

Aufgabe 1: Abfrage der Abteilungsnummer und Mitarbeiterzahl in Abteilungen deren Mitarbeiterzahl größer als 3 ist.

Bildbeschreibung hier einfügen

Übung 2: Fragen Sie die Abteilungsnummer und das Höchstgehalt jeder Abteilung ab, deren Höchstgehalt über 3000 liegt.

Bildbeschreibung hier einfügen

③ Kombinierte Nutzung von Pre-Grouping-Screening und Post-Grouping-Screening

Aufgabe: Ermitteln Sie die Abteilungsnummern und Durchschnittswerte der Mitarbeiter, die 1981 eingetreten sind und deren Durchschnittsgehalt zwischen den verschiedenen Abteilungen über 2000 liegt.

Bildbeschreibung hier einfügen

5. Gruppenabfrage (Gruppieren nach Funktion)

Übung: Gruppieren Sie Mitarbeiter nach der Länge ihrer Namen, ermitteln Sie die Anzahl der Mitarbeiter in jeder Gruppe und filtern Sie heraus, welche eine Mitarbeiteranzahl von > 3 haben.

Wähle Länge (ename) Länge, Anzahl (*) Anzahl
von emp
Gruppieren nach Länge
mit Zählwerten > 3;

Die Ergebnisse sind wie folgt:

Bildbeschreibung hier einfügen

6. Gruppenabfrage (Gruppieren nach mehreren Feldern)

Übung: Fragen Sie das Durchschnittsgehalt der Mitarbeiter in jeder Abteilung und jeder Jobart ab.

Bildbeschreibung hier einfügen

7. Gruppieren nach und Sortieren nach, ein altes Paar

Übung 1: Fragen Sie das Durchschnittsgehalt der Mitarbeiter in jeder Abteilung ab und sortieren Sie sie in absteigender Reihenfolge nach dem Durchschnittsgehalt.

Bildbeschreibung hier einfügen

Übung 2: Fragen Sie das Durchschnittsgehalt der Mitarbeiter in jeder Abteilung ab und sortieren Sie sie in aufsteigender Reihenfolge nach dem Durchschnittsgehalt.

Bildbeschreibung hier einfügen

8. Zusammenfassung der Gruppenabfrage

1) Die Gruppierungsfunktion wird als Bedingung verwendet und muss in der having -Klausel platziert werden.

2) Wenn eine Vorab-Screening-Funktion möglich ist, nutzen Sie diese vorrangig. ( where Filter)

3) group by “-Klausel unterstützt die Gruppierung einzelner Felder, die Gruppierung mehrerer Felder (mehrere Felder sind durch Kommas getrennt und es gibt keine Reihenfolgeanforderung) und die Gruppierung von Funktionen (die weniger häufig verwendet wird).

Oben finden Sie ausführliche Inhalte, mit denen MySQL-Anfänger sich von den Problemen gruppierter Aggregatabfragen verabschieden können. Weitere Informationen zu gruppierten Aggregatabfragen von MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Aggregatabfrage- und Union-Abfragevorgänge für MySQL-Datenbanken
  • Einführung in die Verwendung der gemeinsamen MySQL-Abfragen UNION und UNION ALL
  • Zusammenfassung von vier Situationen gemeinsamer Abfragen zwischen zwei Tabellen in MySQL
  • Detaillierte Analyse und Optimierung der Effizienz gemeinsamer Abfragen in MySQL mit mehreren Tabellen
  • Beliebte Erklärung mehrerer gemeinsamer MySQL-Abfragen
  • Analyse von Beispielen für gemeinsame Abfragevorgänge bei MySQL für mehrere Tabellen
  • Beispiele für MySQL-Aggregatabfragen und Union-Abfragevorgänge

<<:  10 Arten von Ladeanimationen mit CSS3 implementiert. Eine auswählen und los geht‘s?

>>:  5 Möglichkeiten, um schnell den Leerraum eines Inline-Blocks in HTML zu entfernen

Artikel empfehlen

Lösen Sie das Problem der Containerverwaltung mit Docker Compose

Im Docker-Design führt ein Container nur eine Anw...

CentOS 7.x Docker verwendet die Overlay2-Speichermethode

Bearbeiten Sie /etc/docker/daemon.json und fügen ...

JS tiefe und flache Kopierdetails

Inhaltsverzeichnis 1. Was bedeutet „Shallow Copy“...

So erstellen Sie ein Tomcat-Image basierend auf Dockerfile

Dockerfile ist eine Datei, die zum Erstellen eine...

Docker-Konfiguration Alibaba Cloud Image Acceleration Pull-Implementierung

Heute habe ich Docker verwendet, um das Image abz...

Vue: Zwei Komponenten auf gleicher Ebene erreichen eine Wertübertragung

Vue-Komponenten sind verbunden, daher ist es unve...

Lösung für das 404/503-Problem beim Anmelden bei TeamCenter12

TeamCenter12 gibt das Kontokennwort ein und klick...