Gruppierung nach mehreren Spalten verwenden

Ich verstehe den Sinn von GROUP BY x

Aber wie funktioniert GROUP BY x, y, und was bedeutet es?

Lösung

Nach X gruppieren" bedeutet, alle Personen mit demselben Wert für X in eine Gruppe aufzunehmen.

Gruppieren nach X, Y" bedeutet, alle Personen mit den gleichen Werten für X und Y in eine Gruppe zu packen.

Zur Veranschaulichung ein Beispiel: Nehmen wir an, wir haben die folgende Tabelle, in der steht, wer welches Fach an einer Universität belegt:

Table: Subject_Selection

Subject   Semester   Attendee
---------------------------------
ITB001    1          John
ITB001    1          Bob
ITB001    1          Mickey
ITB001    2          Jenny
ITB001    2          James
MKB114    1          John
MKB114    1          Erica

Wenn Sie eine "Gruppierung nach" nur für die Fachspalte verwenden, sagen wir:

select Subject, Count(*)
from Subject_Selection
group by Subject

Sie erhalten dann etwas wie:

Subject    Count
------------------------------
ITB001     5
MKB114     2

...weil es 5 Einträge für ITB001 und 2 für MKB114 gibt.

Wenn wir nach zwei Spalten "gruppieren" würden:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

würden wir dies erhalten:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

Wenn wir nämlich nach zwei Spalten gruppieren, heißt das "Gruppieren Sie sie so, dass alle mit demselben Fach und Semester in derselben Gruppe sind, und berechnen Sie dann alle Aggregatfunktionen (Anzahl, Summe, Durchschnitt usw.) für jede dieser Gruppen ". In diesem Beispiel zeigt sich dies daran, dass es bei der Zählung drei Personen gibt, die ITB001 im ersten Semester belegen, und zwei, die es im zweiten Semester belegen. Die beiden Personen, die MKB114 belegen, sind im 1. Semester, also gibt es keine Zeile für das 2.

Ich hoffe, das macht Sinn.

Kommentare (7)

Die Klausel GROUP BY wird in Verbindung mit den Aggregatfunktionen verwendet, um die Ergebnismenge nach einer oder mehreren Spalten zu gruppieren. z.B.:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Merken Sie sich diese Reihenfolge:

  1. SELECT (dient zur Auswahl von Daten aus einer Datenbank)

  2. FROM (Klausel zur Auflistung der Tabellen)

  3. WHERE (Klausel zum Filtern von Datensätzen)

  4. GROUP BY (Klausel kann in einer SELECT-Anweisung verwendet werden, um Daten (Klausel kann in einer SELECT-Anweisung verwendet werden, um Daten > über mehrere Datensätze zu sammeln und die Ergebnisse nach einer oder mehreren Spalten zu gruppieren)

  5. HAVING (Klausel wird in Kombination mit der GROUP BY-Klausel verwendet, um die Gruppen der zurückgegebenen Zeilen auf diejenigen einzuschränken, bei denen die Bedingung TRUE ist)

  6. ORDER BY (Schlüsselwort, das zum Sortieren der Ergebnismenge verwendet wird)

Sie können alle diese Schlüsselwörter verwenden, wenn Sie Aggregatfunktionen verwenden. Sie müssen in dieser Reihenfolge angegeben werden, da sonst ein Fehler auftreten kann.

Aggregatfunktionen sind:

MIN gibt den kleinsten Wert in einer bestimmten Spalte zurück.

SUM gibt die Summe der numerischen Werte in einer bestimmten Spalte zurück

AVG gibt den Durchschnittswert einer bestimmten Spalte zurück

COUNT gibt die Gesamtzahl der Werte in einer bestimmten Spalte zurück

COUNT(*) gibt die Anzahl der Zeilen in einer Tabelle zurück

Kommentare (3)