web-dev-qa-db-de.com

Verwenden von Gruppieren nach für mehrere Spalten

Ich verstehe den Punkt von GROUP BY x

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

Group By X bedeutet alle mit dem gleichen Wert für X in eine Gruppe setzen.

Group By X, Y bedeutet alle mit den gleichen Werten für X und Y in eine Gruppe setzen.

Angenommen, wir haben die folgende Tabelle, um anhand eines Beispiels zu veranschaulichen, wer welches Fach an einer Universität besucht:

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 einen group by nur für die Betreffspalte verwenden; sagen:

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

Sie erhalten so etwas wie:

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

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

Wenn wir group by zwei Spalten wären:

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

wir würden folgendes bekommen:

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

Wenn wir nach zwei Spalten gruppieren, heißt das nämlich "Gruppieren Sie sie so, dass sich alle mit demselben Fach und Semester in derselben Gruppe befinden, und berechnen Sie dann alle Aggregatfunktionen (Anzahl , Summe, Durchschnitt usw.) für jede dieser Gruppen ". In diesem Beispiel wird dies durch die Tatsache demonstriert, dass, wenn wir sie zählen, im ersten Semester drei Personen ITB001 ausführen und im zweiten Semester zwei von den Leuten, die MKB114 machen, sind in Semester 1, es gibt also keine Zeile für Semester 2 (keine Daten passen in die Gruppe "MKB114, Semester 2")

Hoffentlich macht das Sinn.

1865
Smashery

Die GROUP BY -Klausel 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;

Erinnere dich an diese Bestellung:

1) SELECT (wird verwendet, um Daten aus einer Datenbank auszuwählen)

2) FROM (Klausel wird zum Auflisten der Tabellen verwendet)

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

4) GROUP BY (Klausel kann in einer SELECT-Anweisung verwendet werden, um Daten über mehrere Datensätze hinweg 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 zu beschränken, deren Bedingung WAHR ist.)

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

Sie können all diese Funktionen verwenden, wenn Sie Aggregatfunktionen verwenden. Dies ist die Reihenfolge, in der sie festgelegt werden müssen. Andernfalls kann ein Fehler auftreten.

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

24
S. Mayol