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

Regeln für die Gestaltung des Anmeldeformulars

Ich habe „Patterns for Sign Up & Ramp Up“ vor ...

js, um einen interessanten Countdown-Effekt zu erzielen

js interessanter Countdown-Fall. Zu Ihrer Informa...

Detaillierte Erklärung, warum MySQL nicht mit UNION zwei Abfragen verbinden kann

Überblick UNION Mit dem Schlüsselwort „Verbindung...

Beispiele für die Verwendung von React Ref

Inhaltsverzeichnis Was ist ref So verwenden Sie r...

So installieren Sie ElasticSearch auf Docker in einem Artikel

Inhaltsverzeichnis Vorwort 1. Docker installieren...

10 HTML-Tabellen-bezogene Tags

Tatsächlich werden viele Leute sagen: „Ich habe ge...

Umfassende Analyse der Isolationsebenen in MySQL

Wenn die Datenbank gleichzeitig denselben Datenst...

Detaillierte Erklärung der Schritte zum Erstellen eines Webservers mit node.js

Vorwort Es ist sehr einfach, einen Server in node...

html+css+js zur Realisierung der Funktion der Fotovorschau und des Bildhochladens

Vorwort: Wenn wir Webseiten erstellen, müssen wir...

Detaillierte Erklärung zur Installation der PHP-Curl-Erweiterung unter Linux

Dieser Artikel beschreibt, wie man die PHP-Curl-E...

Der einfachste Weg zum Debuggen gespeicherter Prozeduren in MySQL

Ein Kollege hat mir einmal gesagt, ich solle eine...