Frage Gruppen nach mehreren Spalten verwenden


Ich verstehe den Sinn von GROUP BY x 

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


747
2018-03-10 23:11


Ursprung


Antworten:


Group By X meint setze alle mit dem gleichen Wert für X in die eine Gruppe.

Group By X, Y meint setze alle diejenigen mit den gleichen Werten für X und Y in die eine Gruppe.

Um ein Beispiel zu veranschaulichen, nehmen wir an, dass wir die folgende Tabelle haben, die damit zu tun hat, 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 a verwenden group by nur in der Betreffzeile; sagen:

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

Sie erhalten etwas wie:

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

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

Wenn wir es wollten group by zwei Spalten:

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

wir würden das bekommen:

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

Dies liegt daran, dass, wenn wir nach zwei Spalten gruppieren, es heißt "Gruppieren Sie sie so, dass alle Personen mit demselben Betreff und demselben Semester in derselben Gruppe sind, und berechnen Sie dann alle Aggregatfunktionen (Anzahl, Summe, Durchschnitt usw.) für jede dieser Gruppen ". In diesem Beispiel wird dies durch die Tatsache gezeigt, dass, wenn wir sie zählen, es gibt drei Leute, die ITB001 in Semester 1 machen, und zwei tut es im 2. Semester. Die beiden Leute, die MKB114 machen, sind im 1. Semester, also gibt es keine Zeile für Semester 2 (keine Daten passen in die Gruppe "MKB114, Semester 2")

Hoffentlich macht das Sinn.


1580
2018-03-10 23:24



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 Reihenfolge:

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

2) FROM (Klausel wird verwendet, um die Tabellen aufzulisten)

3) WHERE (Klausel wird verwendet, um Datensätze zu filtern)

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

5) HAVING (Klausel wird in Kombination mit der GROUP BY - Klausel verwendet   Beschränken Sie die Gruppen zurückgegebener Zeilen auf diejenigen, deren Bedingung erfüllt ist   ist wahr)

6) ORDER BY (Schlüsselwort wird verwendet, um die Ergebnismenge zu sortieren)

Sie können alle diese verwenden, wenn Sie Aggregatfunktionen verwenden, und dies ist die Reihenfolge, in der sie festgelegt werden müssen, andernfalls können Sie einen Fehler erhalten.

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


18
2017-12-15 22:14