Detaillierte Erklärung der MySQL-Datengruppierung

Detaillierte Erklärung der MySQL-Datengruppierung

Gruppe erstellen

Die Gruppierung wird in der GROUP BY-Klausel der SELECT-Anweisung vorgenommen.

Beispiel:

Wählen Sie vend_id, COUNT(*) AS num_prods FROM Produkte GROUP BY vend_id;

GRUPPELN NACH

  • Die GROUP BY-Klausel kann eine beliebige Anzahl von Spalten enthalten, was verschachtelte Gruppierungen ermöglicht und eine detailliertere Kontrolle über die Datengruppierung bietet.
  • Wenn Sie Gruppen in der GROUP BY-Klausel verschachteln, werden die Daten bei der zuletzt angegebenen Gruppierung aggregiert. Mit anderen Worten werden beim Erstellen einer Gruppierung alle angegebenen Spalten gemeinsam berechnet. (Daten können also nicht aus einzelnen Spalten abgerufen werden).
  • Jede in der GROUP BY-Klausel aufgelistete Spalte muss eine Suchspalte oder ein gültiger Ausdruck sein (aber keine Aggregatfunktion). Wenn Sie einen Ausdruck in der SELECT-Klausel verwenden, müssen Sie denselben Ausdruck in der GROUP BY-Klausel angeben. Sie können keinen Alias ​​verwenden.
  • Mit Ausnahme von Anweisungen zur Aggregatberechnung muss jede Spalte der SELECT-Anweisung in der GROUP BY-Klausel angegeben werden.
  • Wenn in der Gruppierungsspalte ein NULL-Wert vorhanden ist, wird NULL als Gruppe zurückgegeben. Wenn die Spalte mehrere Zeilen mit NULL-Werten enthält, werden diese gruppiert.
  • Die GROUP BY-Klausel muss nach der WHERE-Klausel und vor der ORDER BY-Klausel stehen.

Filtergruppen

Möchte man beispielsweise alle orthopädischen Abteilungen auflisten, die über mindestens zwei Aufträge verfügen, müssen die Daten auf Basis der gesamten Gruppierung und nicht auf Basis einzelner Zeilen gefiltert werden.

Sie können HAVING verwenden

Wählen Sie cust_id, COUNT(*) AS Bestellungen FROM Bestellungen GROUP BY cust_id HAVING COUNT(*) >= 2;

Der Unterschied zwischen HAVING und WHERE besteht darin, dass WHERE vor der Datengruppierung filtert, während HAVING nach der Gruppierung filtert. Natürlich können beide in derselben Anweisung vorkommen.

Liste Lieferanten mit 2 oder mehr Produkten mit einem Preis von 10 oder mehr

SELECT vend_id, COUNT(*) AS num_prods FROM products WHERE prod_price >= 10 GROUP BY vend_id HAVING COUNT(*) >= 2;

Anbieter mit zwei Top-Produkten auflisten

Wählen Sie vend_id, COUNT(*) AS num_prods FROM Produkte GROUP BY vend_id HAVING COUNT(*) >= 2;

Gruppieren und Sortieren

BESTELLEN BIS GRUPPELN NACH
Sortieren der Ausgabe Zeilen gruppieren. Die Ausgabe erfolgt jedoch möglicherweise nicht in der Reihenfolge der Gruppen
Jede Spalte kann verwendet werden (auch nicht ausgewählte Spalten) Es dürfen nur Auswahlspalten oder Ausdrucksspalten verwendet werden und jeder Auswahlspaltenausdruck muss verwendet werden.
Nicht unbedingt erforderlich Wenn Sie eine Spalte (Ausdruck) mit einer Aggregatfunktion verwenden, müssen Sie

Abrufen der Bestellnummer und des Gesamtbestellpreises von Bestellungen mit einem Gesamtbestellpreis größer oder gleich 50

SELECT Bestellnummer, SUM(Menge*Artikel) AS Bestellsumme FROM Bestellartikel GROUP BY Bestellnummer HAVING SUM(Menge*Artikelpreis) >= 50;

Wenn Sie die Ausgabe nach dem Gesamtbestellpreis sortieren

SELECT bestellnummer, SUM(Menge * Artikelpreis) AS bestellsumme FROM bestellartikel GROUP BY bestellnummer HAVING SUM(Menge * Artikelpreis) >= 50 ORDER BY bestellsumme;

Reihenfolge der SELECT-Klauseln

Klauseln veranschaulichen Ist es notwendig,
WÄHLEN Die zurückzugebende Spalte oder der Ausdruck Ja
AUS Die Tabelle, aus der die Daten abgerufen werden sollen Wird nur beim Auswählen von Daten aus einer Tabelle verwendet
GRUPPELN NACH Gruppenbeschreibung Wird nur bei der Berechnung von Aggregaten nach Gruppen verwendet.
WO Filtern auf Zeilenebene NEIN
HABEN Filtern auf Gruppenebene NEIN
BESTELLEN BIS Sortierreihenfolge der Ausgabe NEIN
LIMIT Die Anzahl der abzurufenden Zeilen NEIN

Oben finden Sie eine ausführliche Erläuterung der MySQL-Datengruppierung. Weitere Informationen zur MySQL-Datengruppierung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • MySql-Gruppierung und zufälliges Abrufen eines Datenelements aus jeder Gruppe
  • Implementieren Sie Group By basierend auf MySQL, um die neuesten Daten jeder Gruppe zu erhalten
  • MySQL-Unterabfragen und gruppierte Abfragen
  • MySQL-Gruppierungsabfragen und Aggregatfunktionen
  • MySql Group By implementiert die Gruppierung mehrerer Felder
  • Detaillierte Erklärung der MySQL-Gruppensortierung, um die Top N zu finden
  • Detailliertes Beispiel zum Abrufen des Maximalwerts jeder Gruppe nach der Gruppierung in MySQL
  • Mysql verwendet eine gruppenweise Sortierung

<<:  Analyse der Nutzung des Xmeter API-Schnittstellentesttools

>>:  Auszeichnungssprache - Bildersetzung

Artikel empfehlen

JS-Objektkonstruktor Object.freeze

Inhaltsverzeichnis Überblick Beispiel 1) Objekt e...

Verwenden von Vue3 (Teil 1) Erstellen eines Vue CLI-Projekts

Inhaltsverzeichnis 1. Offizielle Dokumentation 2....

Nginx-Lastausgleichsalgorithmus und Failover-Analyse

Überblick Der Lastenausgleich von Nginx bietet Up...

JavaScript zum Implementieren des Vorladens und verzögerten Ladens von Bildern

In diesem Artikel wird der spezifische Code zur I...

Beispiel für die Anpassung von rem an mobile Geräte

Vorwort Überprüfung und Zusammenfassung von REM-A...

Super ausführliches Tutorial zur Installation und Konfiguration von MySQL8.0.22

Hallo zusammen, heute lernen wir die Installation...

Lösung für das Problem, dass MySQL Daten sehr langsam löscht und einfügt

Wenn ein Unternehmensentwickler eine Insert-Anwei...

So konfigurieren Sie MySQL8 in Nacos

1. Erstellen Sie die MySQL-Datenbank nacos_config...

So fügen Sie Videos in HTML ein und machen sie mit allen Browsern kompatibel

Zum Einfügen von Videos in HTML werden am häufigst...

So legen Sie die Speichergröße von Docker Tomcat fest

Wenn Sie Tomcat in Docker installieren, kann es b...

So installieren Sie einen SVN-Server unter Linux

1. Yum-Installation yum installiere Subversion 2....