Gruppe bedeutet „Gruppenabfrage“, was als „Gruppierung (Gruppe) nach (nach) bestimmten Regeln“ verstanden werden kann. Seine Funktion besteht darin, einen Datensatz durch bestimmte Regeln in mehrere kleine Bereiche zu unterteilen und dann auf mehrere kleine Bereiche abzuzielen Bereiche werden für die Datenverarbeitung genutzt. In MySQL ist GROUP BY eine optionale Klausel der SELECT-Anweisung, die zum Gruppieren von Abfrageergebnissen basierend auf einem oder mehreren Feldern verwendet wird. Sie reduziert die Anzahl der Zeilen im Ergebnissatz.
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
group bedeutet „Gruppenabfrage“.
Die Group By-Anweisung bedeutet auf Englisch wörtlich „Gruppieren nach (nach) bestimmten Regeln“. Seine Funktion besteht darin, einen Datensatz durch bestimmte Regeln in mehrere kleine Bereiche zu unterteilen und dann die Datenverarbeitung in mehreren kleinen Bereichen durchzuführen.
In MySQL kann das Schlüsselwort GROUP BY Abfrageergebnisse nach einem oder mehreren Feldern gruppieren.
Die GROUP BY-Klausel gruppiert eine Reihe von Zeilen nach dem Wert einer Spalte oder eines Ausdrucks in eine kleine Gruppe von Zusammenfassungszeilendatensätzen. Die GROUP BY-Klausel gibt eine Zeile für jede Gruppe zurück. Mit anderen Worten: Es reduziert die Anzahl der Zeilen im Ergebnissatz.
GROUP BY-Klausel wird häufig mit Aggregatfunktionen wie SUM, AVG, MAX, MIN und COUNT verwendet. Aggregatfunktionen werden in der SELECT-Klausel verwendet, um Informationen zu jeder Gruppierung zu berechnen.
Die GROUP BY-Klausel ist eine optionale Klausel der SELECT-Anweisung. Das Folgende ist die Syntax der GROUP BY-Klausel:
SELECT c1, c2,..., cn, aggregate_function(ci) FROM table WHERE where_conditions GROUP BY c1 , c2,...,cn;
Die GROUP BY-Klausel muss nach den FROM- und WHERE-Klauseln stehen. Nach dem Schlüsselwort GROUP BY folgt eine durch Kommas getrennte Liste von Spalten oder Ausdrücken, die als Bedingungen zum Gruppieren von Zeilen verwendet werden sollen.
1. Einfaches MySQL-GROUP-BY-Beispiel
Sehen wir uns die Auftragstabelle in der Beispieldatenbank (yiibaidb) an: Sie möchten die Bestellstatuswerte in Untergruppen gruppieren, Sie müssen die GROUP BY-Klausel verwenden und die Statusspalte angeben, um die Gruppierung durchzuführen. Die folgende Abfrage:
mysql> desc orders;
Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse -
Wie Sie sehen, ist der von der GROUP BY-Klausel zurückgegebene Statuswert eindeutig. Es funktioniert wie der DISTINCT-Operator, wie in der folgenden Abfrage gezeigt:
SELECT status FROM orders GROUP BY status;
Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse:
2. MySQL GROUP BY- und Aggregatfunktionenkönnen mit Aggregat ausgeführt werden Funktionen Berechnet eine Reihe von Zeilen und gibt einen einzelnen Wert zurück. Die GROUP BY-Klausel wird häufig mit Aggregatfunktionen verwendet, um Berechnungen für jede Gruppe durchzuführen und einen einzelnen Wert zurückzugeben.Wenn Sie beispielsweise die Anzahl der Bestellungen in jedem Status wissen möchten, können Sie die COUNT-Funktion und die Abfrageanweisung der GROUP BY-Klausel verwenden, wie unten gezeigt:
SELECT DISTINCT status FROM orders;Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse:
Bitte beachten Sie die folgenden Tabellen zu Bestellungen (Bestellungen) und Bestelldetails (Bestelldetails), deren ER-Diagramm ist unten dargestellt -
Um den Gesamtbetrag aller Bestellungen nach Status zu erhalten, können Sie die Bestelldetails verwenden Tabelle, um die Auftragstabelle zu verbinden, und verwenden Sie die SUMME-Funktion, um den Gesamtbetrag zu berechnen. Bitte beziehen Sie sich auf die folgende Abfrage:
SELECT status, COUNT(*) AS total_number FROM orders GROUP BY status;
Das Ausführen der obigen Abfrage führt zu den folgenden Ergebnissen:
Ähnlicherweise gibt die folgende Abfrage die Bestellnummer und den Gesamtbetrag jeder Bestellung zurück.
SELECT status, SUM(quantityOrdered * priceEach) AS amount FROM orders INNER JOIN orderdetails USING (orderNumber) GROUP BY status;
Führen Sie die obige Abfrage aus und erhalten Sie die folgenden Ergebnisse:
3. MySQL GROUP BY-AusdrucksbeispielZusätzlich zu Spalten können Zeilen nach Ausdrücken gruppiert werden. Die folgende Abfrage ermittelt den Gesamtumsatz pro Jahr.SELECT orderNumber, SUM(quantityOrdered * priceEach) AS total FROM orderdetails GROUP BY orderNumber;Führen Sie die obige Abfrage aus und erhalten Sie die folgenden Ergebnisse:
In diesem Beispiel verwenden wir die YEAR-Funktion, um die Jahresdaten aus dem Bestelldatum (orderDate) zu extrahieren. Es werden nur Bestellungen mit dem Status „Versendet“ berücksichtigt. Beachten Sie, dass die in der SELECT-Klausel vorkommenden Ausdrücke mit denen in der GROUP BY-Klausel identisch sein müssen.
MySQL GROUP BY- und HAVING-Klausel
Sie können die HAVING-Klausel verwenden, um die von der GROUP BY-Klausel zurückgegebenen Gruppen zu filtern. Die folgende Abfrage verwendet die HAVING-Klausel, um die Jahresumsatzsummen ab 2013 auszuwählen.SELECT YEAR(orderDate) AS year, SUM(quantityOrdered * priceEach) AS total FROM orders INNER JOIN orderdetails USING (orderNumber) WHERE status = 'Shipped' GROUP BY YEAR(orderDate);Führen Sie die obige Abfrage aus und erhalten Sie die folgenden Ergebnisse -
标准SQL不允许使用GROUP BY子句中的别名,但MySQL支持此选项。以下查询从订单日期提取年份,并对每年的订单进行计数。该year用作表达式YEAR(orderDate)的别名,它也用作GROUP BY子句中的别名,此查询在标准SQL中无效。
参考以下查询 -
SELECT YEAR(orderDate) AS year, COUNT(orderNumber) FROM orders GROUP BY year;
执行上面查询,得到以下结果 -
MySQL还允许您以升序或降序(标准SQL不能提供)对组进行排序。默认顺序是升序。例如,如果要按状态获取订单数量并按降序对状态进行排序,则可以使用带有DESC的GROUP BY子句,如下查询语句:
SELECT status, COUNT(*) FROM orders GROUP BY status DESC;
执行上面查询,得到以下结果 -
请注意,在GROUP BY子句中使用DESC以降序对状态进行排序。我们还可以在GROUP BY子句中明确指定ASC,按状态对分组进行升序排序。
【相关推荐:mysql视频教程】
Das obige ist der detaillierte Inhalt vonWas bedeutet Gruppe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!