Brug af gruppe efter på flere kolonner

Jeg forstår pointen med GROUP BY x.

Men hvordan fungerer GROUP BY x, y, og hvad betyder det?

Løsning

Group By X betyder at alle med den samme værdi for X samles i én gruppe.

Group By X, Y betyder at alle med samme værdier for både X og Y lægges i samme gruppe.

Lad os illustrere dette ved hjælp af et eksempel: Lad os sige, at vi har følgende tabel, som viser, hvem der læser hvilket fag på et universitet:

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

Når du bruger en group by kun på kolonnen for faget; f.eks:

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

Du vil få noget i stil med:

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

...fordi der er 5 poster for ITB001 og 2 for MKB114

Hvis vi skulle gruppere efter to kolonner:

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

ville vi få dette:

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

Det skyldes, at når vi grupperer efter to kolonner, siger den "Grupper dem, så alle dem med samme emne og semester er i samme gruppe, og beregn derefter alle de aggregerede funktioner (Count, Sum, Average osv.) for hver af disse grupper". I dette eksempel viser det sig ved, at når vi tæller dem, er der tre personer, der læser ITB001 på 1. semester, og to personer, der læser det på 2. semester. Begge de personer, der laver MKB114, er på 1. semester, så der er ingen række for 2. semester (ingen data passer ind i gruppen "MKB114, 2. semester")

Forhåbentlig giver det mening.

Kommentarer (7)

Klausulen GROUP BY bruges sammen med aggregeringsfunktionerne til at gruppere resultatmængden efter en eller flere kolonner, f.eks:

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

Husk denne rækkefølge:

  1. SELECT (bruges til at vælge data fra en database)

  2. FROM (anvendes til at opregne tabellerne)

  3. WHERE (klausul bruges til at filtrere poster)

  4. GROUP BY (klausulen kan bruges i en SELECT-anvisning til at indsamle data på tværs af flere poster og gruppere resultaterne efter en eller flere kolonner)

  5. HAVING (klausulen bruges i kombination med GROUP BY-klausulen til at begrænse grupperne af returnerede rækker til kun at omfatte de rækker, hvis betingelse er SAND)

  6. ORDER BY (nøgleordet bruges til at sortere resultatmængden)

Du kan bruge alle disse, hvis du bruger aggregerede funktioner, og dette er den rækkefølge, de skal indstilles i, ellers kan du få en fejl.

Aggregerede funktioner er:

MIN returnerer den mindste værdi i en given kolonne

SUM returnerer summen af de numeriske værdier i en given kolonne

AVG returnerer den gennemsnitlige værdi i en given kolonne

COUNT returnerer det samlede antal værdier i en given kolonne

COUNT(*) returnerer antallet af rækker i en tabel

Kommentarer (3)