Suche…


Syntax

  1. SELECT Ausdruck1, Ausdruck2, ... Ausdruck_n,
  2. aggregate_function (Ausdruck)
  3. FROM Tische
  4. [WO Bedingungen]
  5. GROUP BY Ausdruck1, Ausdruck2, ... Ausdruck_n;

Parameter

Parameter EINZELHEITEN
expression1, expression2, ... expression_n Die Ausdrücke, die nicht in einer Aggregatfunktion eingeschlossen sind und in der GROUP BY-Klausel enthalten sein müssen.
aggregate_function Eine Funktion wie SUMME, COUNT, MIN, MAX oder AVG.
Tische Die Tabellen, von denen Sie Datensätze abrufen möchten. In der FROM-Klausel muss mindestens eine Tabelle aufgeführt sein.
WHERE Bedingungen Wahlweise. Die Bedingungen, die erfüllt sein müssen, damit die Datensätze ausgewählt werden.

Bemerkungen

Die MySQL GROUP BY-Klausel wird in einer SELECT-Anweisung verwendet, um Daten über mehrere Datensätze hinweg zu sammeln und die Ergebnisse nach einer oder mehreren Spalten zu gruppieren.

Sein Verhalten wird zum Teil durch den Wert der Variablen ONLY_FULL_GROUP_BY bestimmt . Wenn dies aktiviert ist, geben SELECT Anweisungen, die nach einer beliebigen Spalte gruppieren, die nicht in der Ausgabe enthalten ist, einen Fehler zurück. ( Dies ist der Standard ab 5.7.5 .) Sowohl das Setzen als auch das Nicht-Setzen dieser Variablen kann für naive Benutzer oder Benutzer, die an andere DBMS gewöhnt sind, Probleme verursachen.

GROUP BY US-Funktion verwenden

SELECT product, SUM(quantity) AS "Total quantity"
FROM order_details
GROUP BY product;

Gruppieren mit MIN-Funktion

Angenommen, eine Tabelle mit Angestellten, in der jede Zeile ein Angestellter ist, der einen name , eine department und ein salary .

SELECT department, MIN(salary) AS "Lowest salary"
FROM employees
GROUP BY department;

Dies würde Ihnen sagen, welche Abteilung den Mitarbeiter mit dem niedrigsten Gehalt enthält und wie hoch dieses Gehalt ist. Den name des Mitarbeiters mit dem niedrigsten Gehalt in jeder Abteilung herauszufinden, ist ein anderes Problem, das über den Rahmen dieses Beispiels hinausgeht. Siehe "Max. Gruppe".

GROUP BY COUNT-Funktion verwenden

SELECT department, COUNT(*) AS "Man_Power"
FROM employees
GROUP BY department;

GROUP BY mit HAVING

SELECT department, COUNT(*) AS "Man_Power"
FROM employees
GROUP BY department
HAVING COUNT(*) >= 10;

Die Verwendung von GROUP BY ... HAVING zum Filtern von Aggregatsätzen entspricht der Verwendung von SELECT ... WHERE zum Filtern einzelner Datensätze.

Man könnte auch HAVING Man_Power >= 10 sagen, da HAVING "Aliase" versteht.

Gruppe Durch Verwendung von Group Concat

Group Concat wird in MySQL verwendet, um verkettete Werte von Ausdrücken mit mehr als einem Ergebnis pro Spalte abzurufen . Das bedeutet, dass für eine Spalte viele Zeilen ausgewählt werden müssen, z. B. Name(1):Score(*)

Name Ergebnis
Adam A +
Adam EIN-
Adam B
Adam C +
Rechnung D-
John EIN-
SELECT Name, GROUP_CONCAT(Score ORDER BY Score desc SEPERATOR ' ') AS Grades
FROM   Grade
GROUP BY Name

Ergebnisse:

+------+------------+ 
| Name | Grades     | 
+------+------------+ 
| Adam | C+ B A- A+ | 
| Bill | D-         | 
| John | A-         | 
+------+------------+ 

GROUP BY mit AGGREGATE-Funktionen

Tabelle ORDERS

+---------+------------+----------+-------+--------+
| orderid | customerid | customer | total | items  |
+---------+------------+----------+-------+--------+
|       1 |          1 | Bob      |  1300 |     10 |
|       2 |          3 | Fred     |   500 |      2 |
|       3 |          5 | Tess     |  2500 |      8 |
|       4 |          1 | Bob      |   300 |      6 |
|       5 |          2 | Carly    |   800 |      3 |
|       6 |          2 | Carly    |  1000 |     12 |
|       7 |          3 | Fred     |   100 |      1 |
|       8 |          5 | Tess     | 11500 |     50 |
|       9 |          4 | Jenny    |   200 |      2 |
|      10 |          1 | Bob      |   500 |     15 |
+---------+------------+----------+-------+--------+
  • ANZAHL

Gibt die Anzahl der Zeilen zurück , die bestimmte Kriterien in der WHERE Klausel erfüllen.

ZB: Anzahl der Bestellungen für jeden Kunden.

SELECT customer, COUNT(*) as orders
FROM orders
GROUP BY customer
ORDER BY customer

Ergebnis:

+----------+--------+
| customer | orders |
+----------+--------+
| Bob      |      3 |
| Carly    |      2 |
| Fred     |      2 |
| Jenny    |      1 |
| Tess     |      2 |
+----------+--------+
  • SUMME

Gibt die Summe der ausgewählten Spalte zurück.

ZB: Summe der Summe und der Artikel für jeden Kunden.

SELECT customer, SUM(total) as sum_total, SUM(items) as sum_items
FROM orders
GROUP BY customer
ORDER BY customer

Ergebnis:

+----------+-----------+-----------+
| customer | sum_total | sum_items |
+----------+-----------+-----------+
| Bob      |      2100 |        31 |
| Carly    |      1800 |        15 |
| Fred     |       600 |         3 |
| Jenny    |       200 |         2 |
| Tess     |     14000 |        58 |
+----------+-----------+-----------+
  • AVG

Gibt den Durchschnittswert einer Spalte mit numerischem Wert zurück.

ZB: Durchschnittlicher Bestellwert für jeden Kunden.

SELECT customer, AVG(total) as avg_total
FROM orders
GROUP BY customer
ORDER BY customer

Ergebnis:

+----------+-----------+
| customer | avg_total |
+----------+-----------+
| Bob      |       700 |
| Carly    |       900 |
| Fred     |       300 |
| Jenny    |       200 |
| Tess     |      7000 |
+----------+-----------+
  • MAX

Gibt den höchsten Wert einer bestimmten Spalte oder eines bestimmten Ausdrucks zurück.

ZB: Höchste Auftragssumme für jeden Kunden.

SELECT customer, MAX(total) as max_total
FROM orders
GROUP BY customer
ORDER BY customer

Ergebnis:

+----------+-----------+
| customer | max_total |
+----------+-----------+
| Bob      |      1300 |
| Carly    |      1000 |
| Fred     |       500 |
| Jenny    |       200 |
| Tess     |     11500 |
+----------+-----------+
  • MINDEST

Gibt den niedrigsten Wert einer bestimmten Spalte oder eines bestimmten Ausdrucks zurück.

ZB: Niedrigste Auftragssumme für jeden Kunden.

SELECT customer, MIN(total) as min_total
FROM orders
GROUP BY customer
ORDER BY customer

Ergebnis:

+----------+-----------+
| customer | min_total |
+----------+-----------+
| Bob      |       300 |
| Carly    |       800 |
| Fred     |       100 |
| Jenny    |       200 |
| Tess     |      2500 |
+----------+-----------+


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow