4.1 Spalten gruppieren

Ganz wichtig ist auch, dass Sie beim Gruppieren von Datensätzen im Abschnitt SELECTnur die Spalten angeben können, nach denen die Daten gruppiert werden.

Dudu kannst nichtSchreiben Sie eine Typabfrage und geben Sie die SELECTNamensspalte im Abschnitt an :

SELECT brand, name
FROM product
GROUP BY brand

Sie haben eine Reihe von Zeilen in der Produkttabelle mit dem Namensfeld und es ist nicht klar, welche Zeile Sie hier ersetzen müssen. Denken Sie noch einmal darüber nach: Sie möchten die Anzahl der Produkte jeder Marke wissen und wie die resultierende Tabelle den Namen des Produkts erhalten kann?

Wenn Sie den Operator verwenden GROUP BY, können keine normalen Zeilen in Ihr Ergebnis gelangen, sondern nur Spalten, nach denen Daten gruppiert sind, und „berechnete Spalten“, wie zCOUNT(*)

4.2 Gruppierung nach berechneten Spalten

Sie können jedoch nach mehreren Spalten und sogar nach berechneten Spalten gruppieren. Beispiel:

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year

Und das Ergebnis dieser Abfrage:

Hire_Year gesamt
2012 1
2013 1
2014 1
2015 2
2018 1

Lassen Sie uns unsere Anfrage analysieren.

In der Mitarbeitertabelle hat jeder Mitarbeiter ein eindeutiges Einstellungsdatum, daher funktioniert die Gruppierung der Daten nicht. Für jedes Datum gibt es einen Datensatz, und die Gruppierung macht wenig Sinn. Wenn wir jedoch vom Einstellungsdatum zum Einstellungsjahr übergehen, kann es durchaus sein, dass das Unternehmen im selben Jahr mehrere Mitarbeiter eingestellt hat.

Sehen wir uns noch einmal an, wie diese Tabelle vor der Gruppierung aussehen wird:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	join_date
FROM employee

Und das Ergebnis dieser Abfrage:

Ausweis Name Hire_Year Beitrittsdatum
1 Iwanow Iwan 2012 30.06.2012
2 Petrov Petr 2013 12.08.2013
3 Iwanow Sergej 2014 01.01.2014
4 Rabinovich Moisha 2015 12.05.2015
5 Kirienko Anastasia 2015 10.10.2015
6 Vaska 2018 11.11.2018

Die resultierende Tabelle kann jedoch nach „Einstellungsjahr“ gruppiert werden , um herauszufinden, wie viele Personen in einem bestimmten Jahr eingestellt wurden.

4.3 Gruppierung nach mehreren Spalten

Versuchen wir nun herauszufinden, wie viele Mitarbeiter wir in jedem Monat eines jeden Jahres eingestellt haben. Dazu müssen wir der Abfrage nicht nur ein, sondern zwei berechnete Felder gleichzeitig hinzufügen – das Jahr der Einstellung (hire_year) und den Monat der Einstellung (hire_month).

Schreiben wir eine Abfrage wie diese:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	join_date
FROM employee

Und das Ergebnis dieser Abfrage:

Ausweis Name Hire_Year Hire_Monat Beitrittsdatum
1 Iwanow Iwan 2012 6 30.06.2012
2 Petrov Petr 2013 8 12.08.2013
3 Iwanow Sergej 2014 1 01.01.2014
4 Rabinovich Moisha 2015 5 12.05.2015
5 Kirienko Anastasia 2015 10 10.10.2015
6 Vaska 2018 elf 11.11.2018

Wenn wir die Daten in dieser Ergebnistabelle nach Monaten gruppieren, gruppieren wir die Personen einfach in Gruppen, unabhängig vom Jahr ihrer Einstellung. Und die resultierende Tabelle muss drei Spalten enthalten: Jahr, Monat und die Anzahl der eingestellten Mitarbeiter.

Dazu GROUP BYmüssen Sie nach dem Operator nicht den Namen einer, sondern zweier Spalten verwenden. Beispiel:

SELECT
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	COUNT(*) AS total
FROM employee
GROUP BY hire_year, hire_month

Und das Ergebnis dieser Abfrage:

Hire_Year Hire_Monat gesamt
2012 6 1
2013 8 1
2014 1 1
2015 5 1
2015 10 1
2018 elf 1

Wir haben nur wenige Datensätze in der Tabelle, daher gibt es überall in der Gesamtspalte Einheiten. Beachten Sie übrigens, dass das Ergebnis umso mehr Zeilen enthält, je mehr Spalten wir gruppieren.