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

Lösung für Überlauf: versteckter Fehler in CSS

Ursache des Fehlers Als ich heute ein Karussell s...

Haben Sie die MySQL-Verbindungsabfrage wirklich gelernt?

1. Übersicht über Inner Join-Abfragen Der Inner J...

Sortieren von MySQL-Aggregatfunktionen

Inhaltsverzeichnis MySQL-Ergebnissortierung - Agg...

Detailliertes Tutorial zur Installation von ElasticSearch 6.x im Docker

Ziehen Sie zuerst das Image (oder erstellen Sie e...

Sammlung von 25 Schriftarten, die in berühmten Website-Logos verwendet werden

In diesem Artikel sind die Schriftarten zusammeng...

Vue implementiert mehrere Ideen zum Themenwechsel

Inhaltsverzeichnis Themen dynamisch ändern Die er...

Tipps zum Festlegen von HTML-Tabellenrändern

Für viele HTML-Neulinge ist die Tabelle <table...

js realisiert die Lupenfunktion der Shopping-Website

In diesem Artikel wird der spezifische Code von j...

MySQL-Abfrage redundanter Indizes und ungenutzter Indexoperationen

MySQL 5.7 und höhere Versionen ermöglichen die di...