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

MySQL-Trigger: ausführliche Erklärung und einfaches Beispiel

Einfaches Beispiel für einen MySQL-Trigger Gramma...

Detaillierte Erklärung häufig verwendeter CSS-Stile (Layout)

Kompatibel mit neuen CSS3-Eigenschaften In CSS3 k...

JS realisiert den Effekt des Bildwasserfallflusses

In diesem Artikel wird der spezifische JS-Code zu...

So stellen Sie Tencent Cloud Server von Grund auf bereit

Da dies mein erster Beitrag ist, weisen Sie mich ...

Spezifische Verwendung des Linux-Befehls „dirname“

01. Befehlsübersicht dirname - entfernt nicht zu ...

Grundlegender JSON-Betriebsleitfaden in MySQL 5.7

Vorwort Aufgrund der Projektanforderungen werden ...

MySQL-Integritätsbeschränkungen – Definition und Beispiel-Tutorial

Inhaltsverzeichnis Integritätsbeschränkungen Defi...

Chrome 4.0 unterstützt GreaseMonkey-Skripte

GreaseMokey (die Chinesen nennen es Grease Monkey...

Eine kurze Diskussion über den JavaScript-Bereich

Inhaltsverzeichnis 1. Geltungsbereich 1. Globaler...

Beispiel und Lösung für einen SQL-Injection-Sicherheitslückenprozess

Codebeispiel: öffentliche Klasse JDBCDemo3 { öffe...

Gründe und Methoden zum Warten auf die Sperre der Tabellenmetadaten in MySQL

Wenn MySQL DDL-Operationen wie „Alter Table“ ausf...