Wir müssen Daten häufig zusammenfassen, ohne sie tatsächlich abzurufen, und MySQL bietet zu diesem Zweck spezielle Funktionen. Mithilfe dieser Funktionen können MySQL -Abfragen zum Abrufen von Daten für die Analyse und Berichterstellung verwendet werden. Beispiele für diese Art der Suche sind: - Bestimmt die Anzahl der Zeilen in einer Tabelle (oder die Anzahl der Zeilen, die eine Bedingung erfüllen oder einen bestimmten Wert enthalten).
- Ruft die Summe der Zeilengruppen in einer Tabelle ab.
- Finden Sie die Maximal-, Minimal- und Durchschnittswerte einer Tabellenspalte (oder aller Zeilen oder einiger bestimmter Zeilen).
wie:
AVG() gibt den Durchschnittswert einer Spalte zurück COUNT() gibt die Anzahl der Zeilen in einer Spalte zurück MAX() gibt den Maximalwert einer Spalte zurück MIN() gibt den Minimalwert einer Spalte zurück SUM() gibt die Summe der Werte in einer Spalte zurück Zum Beispiel:
Wählen Sie AVG(prod_price) als avg_price
von Produkten

Zum Beispiel: 
Hier kann distinct in einigen Funktionen festgelegt werden, z. B. avg . Wenn es festgelegt ist, tritt ein Phänomen wie dieses auf. Es werden lediglich die Durchschnittswerte zwischen verschiedenen Werten gezählt, abhängig von den spezifischen Geschäftsanforderungen. Im Folgenden werden die gruppierten Daten beschrieben: Gibt die Anzahl der von jedem Lieferanten angebotenen Produkte zurück:
Wählen Sie COUNT(*) als num_prods,vend_id
von Produkten
GROUP BY Verkaufs-ID

Bei der Verwendung group by “ ist Folgendes zu beachten: -
GROUP BY -Klausel kann eine beliebige Anzahl von Spalten enthalten. Dadurch können Gruppen verschachtelt werden, was eine genauere Kontrolle über die Datengruppierung ermöglicht. - Wenn Sie Gruppierungen in
GROUP BY子 verschachteln, werden die Daten auf der Grundlage der zuletzt angegebenen Gruppierung aggregiert. Mit anderen Worten: Beim Erstellen einer Gruppe werden alle angegebenen Spalten gemeinsam berechnet (Sie können also keine Daten aus einzelnen Spalten abrufen). - Jede in
GROUP BY -Klausel aufgelistete Spalte muss eine Suchspalte oder ein gültiger Ausdruck sein (aber keine Aggregatfunktion). Wenn Sie einen Ausdruck in SELECT verwenden, müssen Sie denselben Ausdruck in GROUP BY -Klausel angeben. Aliase können nicht verwendet werden. - Mit Ausnahme von Anweisungen zur Aggregatberechnung muss jede Spalte der
SELECT Anweisung in 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. -
GROUP BY -Klausel muss nach der WHERE-Klausel und vor der ORDER BY-Klausel stehen.
Verwenden von ROLLUP Mit dem Schlüsselwort WITH ROLLUP können Sie den Wert jeder Gruppe und jeder Gruppenzusammenfassungsebene (für jede Gruppe) abrufen. Wie unten dargestellt:
Wählen Sie COUNT(*) als num_prods,vend_id
von Produkten
GROUP BY vend_id mit ROLLUP
Zusätzlich zur Gruppierung von Daten mit GROUP BY ermöglicht MySQL auch das Filtern von Gruppen, um anzugeben, welche Gruppen ein- und welche ausgeschlossen werden sollen. Beispielsweise möchten Sie möglicherweise alle Kunden auflisten, die mindestens zwei Bestellungen haben. Um diese Art von Daten zu erhalten, müssen Sie basierend auf kompletten Gruppen statt auf einzelnen Zeilen filtern. Hier ist eine andere Möglichkeit, den Unterschied zwischen HAVING und WHERE zu verstehen. WHERE filtert, bevor die Daten gruppiert werden, HAVING filtert, nachdem die Daten gruppiert wurden. Dies ist ein wichtiger Unterschied; durch die WHERE-Anweisung ausgeschlossene Zeilen werden bei der Gruppierung nicht berücksichtigt. Dies kann die berechneten Werte verändern und somit Gruppen beeinflussen, die in der HAVING Klausel basierend auf diesen Werten herausgefiltert werden.
Wählen Sie COUNT(*) als num_prods,vend_id
von Produkten
GROUP BY Verkaufs-ID
MIT ANZAHL(*)>2

Besteht also die Notwendigkeit, sowohl WHERE als auch HAVING Klauseln in einer Anweisung zu verwenden? Tatsächlich ist das so. Angenommen, Sie möchten die obige Anweisung weiter filtern, um Kunden zurückzugeben, die in den letzten 12 Monaten mehr als zwei Bestellungen aufgegeben haben. Um dies zu erreichen, können Sie eine WHERE Klausel hinzufügen, um Bestellungen herauszufiltern, die in den letzten 12 Monaten aufgegeben wurden. Fügen Sie dann die HAVING Klausel hinzu, um Gruppen mit mehr als zwei Bestellungen herauszufiltern.
Wählen Sie COUNT(*) als num_prods,vend_id
von Produkten
wobei prod_price>=10
GROUP BY Verkaufs-ID

Hier ist eine Einführung zum order by : Obwohl GROUP BY und ORDER BY oft die gleiche Aufgabe erfüllen, sind sie sehr unterschiedlich. Warum heißt es hier group by und order by “ dieselbe Arbeit erledigen? Dies liegt daran, dass die Daten, wie wir zuvor festgestellt haben, tatsächlich nach Vend_ID sortiert zu sein scheinen. Wir stellen häufig fest, dass mit GROUP BY gruppierte Daten tatsächlich in der Reihenfolge der Gruppen ausgegeben werden. Dies ist jedoch nicht immer der Fall und wird von der SQL-Spezifikation nicht gefordert. Darüber hinaus können Benutzer eine Sortierung in einer anderen Reihenfolge als der Reihenfolge anfordern, in der sie gruppiert wurden. Nur weil Sie Ihre Daten auf eine bestimmte Weise gruppieren (um einen bestimmten Gruppierungsgesamtwert zu erhalten), heißt das nicht, dass Sie die Ausgabe in der gleichen Weise sortieren müssen. Eine explizite ORDER BY -Klausel sollte angegeben werden, auch wenn ihre Wirkung der GROUP BY -Klausel entspricht. Vergessen Sie ORDER BY Wenn Sie GROUP BY -Klausel verwenden, sollten Sie grundsätzlich auch ORDER BY -Klausel angeben. Nur so ist gewährleistet, dass die Daten richtig sortiert werden. Verlassen Sie sich zum Sortieren von Daten niemals ausschließlich auf GROUP BY .
Zum Beispiel:
Wählen Sie COUNT(*) als num_prods,vend_id
von Produkten
wobei prod_price>=10
GROUP BY Verkaufs-ID
ORDER BY Anzahl_Produkte
Anweisungsfolge auswählen:
SELECT Zurückzugebende Spalten oder Ausdrücke Ja FROM Tabelle, aus der Daten abgerufen werden sollen WHERE Filterung auf Zeilenebene Nein GROUP BY Gruppierungsspezifikation Wird nur verwendet, wenn Aggregate nach Gruppe berechnet werden HAVING Filterung auf Gruppenebene Nein ORDER BY Sortierreihenfolge der Ausgabe Nein LIMIT Anzahl der abzurufenden Zeilen Nein Dies ist das Ende dieses Artikels über mysql -Datenaggregation und -gruppierung. Weitere relevante Inhalte zur mysql Gruppierung finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:- Detaillierte Erklärung, ob die MySQL-Datenbank Fremdschlüsseleinschränkungen verwenden soll
- Warum ist der Speicherplatz nach dem Löschen von Tabellendaten in MySQL immer noch belegt?
- Detaillierte Analyse der MySQL-Indexdatenstruktur
- Grundlegende MySQL-Grundlagen: Gruppierungsfunktion, Aggregatfunktion, Gruppierungsabfrage – ausführliche Erklärung
- MySQL-Abfrageanweisung nach Zeit gruppiert
- Detaillierte Erklärung der Group-By-Anweisung in der MySQL-Datenbankgruppenabfrage
- Beispiel für die Implementierung von Gruppierung und Deduplizierung in einer MySQL-Tabellenverknüpfungsabfrage
- Methode zur Optimierung von MySQL-Gruppenabfragen
- MySQL-Gruppierungsmethode für die Gruppierungssequenz einzelner Wörter und die Gruppierung mehrerer Felder
|