Problem:
Sie möchten Ihre Daten nach zwei Spalten gruppieren, damit Sie einige Statistiken zählen können.
Beispiel:
In der order
Tabelle haben Sie die Spalten order_date
, product_id
, customer_id
, und number
. Sie möchten die Anzahl der Produkte zählen, die jeder Kunde jeden Tag kauft.
Die order
Tabelle sieht so aus:
order_date | product_id | Kunden-ID | Nummer |
---|---|---|---|
2020-11-25 | 7 | 1 | 1 |
2020-11-25 | 12 | 1 | 3 |
2020-11-26 | 53 | 1 | 2 |
2020-11-26 | 1 | 2 | 4 |
2020-11-26 | 3 | 2 | 1 |
2020-11-26 | 16 | 2 | 7 |
2020-11-26 | 3 | 3 | 2 |
2020-11-27 | 6 | 3 | 1 |
Lösung:
SELECT order_date, customer_id, SUM(number) AS products_number FROM order
Das Ergebnis ist:
order_date | Kunden-ID | Produktnummer |
---|---|---|
2020-11-26 | 3 | 2 |
2020-11-27 | 3 | 1 |
2020-11-26 | 2 | 12 |
2020-11-25 | 1 | 4 |
2020-11-26 | 1 | 2 |
Diskussion:
Um nach zwei Spalten zu gruppieren, verwenden Sie einfach GROUP BY
mit zwei Säulen. Die Spaltennamen sollten nach GROUP BY
aufgelistet werden Schlüsselwort und durch ein Komma getrennt. Gruppen werden basierend auf den Werten beider Spalten erstellt; für jedes Wertepaar wird eine separate Gruppe erstellt (z. B. ('2020-11-25', 1)
). Sehen Sie sich die folgende Tabelle an, in der jede Gruppe in einer anderen Farbe dargestellt wird:
order_date | Kunden-ID | product_id | Nummer |
---|---|---|---|
2020-11-25 | 1 | 7 | 1 |
25.11.2020 | 1 | 12 | 3 |
2020-11-26 | 1 | 53 | 2 |
2020-11-26 | 2 | 1 | 4 |
2020-11-26 | 2 | 3 | 1 |
2020-11-26 | 2 | 16 | 7 |
2020-11-26 | 3 | 3 | 2 |
2020-11-27 | 3 | 6 | 1 |
Wenn eine oder beide Spalten NULL
haben -Werte werden diese Werte als separate Gruppe behandelt (z. B. ('2020-11-26', NULL)
, (NULL, 5)
oder (NULL, NULL)
).
Andererseits, wenn es NULLs
gibt in einer Spalte, auf die wir eine Aggregatfunktion anwenden, den NULL
Werte werden einfach weggelassen. (In diesem Beispiel ist die Aggregatfunktion SUM()
und die Spalte ist number
). Wenn wir die Zahlenwerte 2 hätten , 1 und NULL für eine der Gruppen die SUM(number)
würde 3
entsprechen (2
und 1
zusammenaddiert werden, und NULL
weggelassen.)
Auf ähnliche Weise können Sie nach einer beliebigen Anzahl von Spalten gruppieren – schreiben Sie einfach die Spaltennamen in GROUP BY
Satz und trennen Sie sie durch Kommas.