Group By-Klausul
Velkommen til Intermediate SQL-kurset!
I det første afsnit dykker vi ned i, hvordan vi kan gruppere og aggregere data i vores tabeller.
Lad os forstå, hvad "gruppering af data" betyder ved hjælp af et simpelt eksempel med en employees-tabel:
Gruppering af data
Vi har en opgave om at finde antallet af medarbejdere i hver afdeling. For at gøre dette vil vi gruppere dataene efter kolonnen department
og anvende aggregering med funktionen COUNT(*)
.
Sådan ser implementeringen ud:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Som du kan se, syntaksen for gruppering af data ser sådan ud:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Bemærk
AGG_FUNC
betyder aggregeringsfunktioner somMAX
,MIN
,COUNT
osv.
Denne syntaks bruges til at finde bestemte værdier ved hjælp af aggregeringsfunktioner i specifikke kolonner.
Lad os overveje et andet eksempel: vi har fået til opgave at finde den afdeling med den højeste gennemsnitlige løn.
For at hente sådanne data skal vi gruppere dataene efter kolonnen department
og derefter bruge funktionen AVG()
til at beregne den gennemsnitlige løn:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
I denne del af sektionen vil vi arbejde med Montreal Metro system-databasen, som indeholder tabellen metro_travel_time
.
Denne tabel vil indeholde information om stationens linje (line_name
), dens navn (station_name
), og den tid det tager for et tog at rejse fra én station til den næste (time_to_next_station
).
Her er, hvordan denne tabel ser ud samt et dataview i den:
Som du kan se, er dette ikke en kompleks tabel. Lad os overveje, hvor vi kan anvende gruppering her.
Den mest oplagte mulighed er gruppering efter farverne på metrolinjerne. Det betyder, at vi kan aggregere dataene ved at gruppere dem efter metrolinjens farve.
Alias
I opgaverne vil du ofte bruge et begreb kaldet et alias. Et alias er i bund og grund et "kælenavn" for en kolonne, du henter med en SELECT
-forespørgsel. Det angives med følgende syntaks:
SELECT column AS alias
Et alias påvirker kun, hvordan kolonnen vises i svaret.
For eksempel, i stedet for MAX(time)
, kan kolonnen kaldes max_time
, hvis du tildeler det alias. Dette gør outputtet mere læsbart og tydeligt.
Swipe to start coding
Din opgave er at finde den længste tid til næste station på hver linje. Dette gør det muligt at bestemme den længste rejsetid mellem stationer for hver metrolinje. For at gøre dette skal du bruge funktionen MAX()
og give den aliaset max_time
, og gruppere dataene efter kolonnen line_name
.
Korte instruktioner
- Hent kolonnen
line_name
og den maksimale værdi af kolonnentime_to_next_station
. - Tilføj aliaset
max_time
til den maksimale værdi. - Gruppér dataene efter kolonnen
line_name
.
Når du har udført denne opgave, skal du klikke på knappen under koden for at tjekke din løsning.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 4
Group By-Klausul
Stryg for at vise menuen
Velkommen til Intermediate SQL-kurset!
I det første afsnit dykker vi ned i, hvordan vi kan gruppere og aggregere data i vores tabeller.
Lad os forstå, hvad "gruppering af data" betyder ved hjælp af et simpelt eksempel med en employees-tabel:
Gruppering af data
Vi har en opgave om at finde antallet af medarbejdere i hver afdeling. For at gøre dette vil vi gruppere dataene efter kolonnen department
og anvende aggregering med funktionen COUNT(*)
.
Sådan ser implementeringen ud:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Som du kan se, syntaksen for gruppering af data ser sådan ud:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Bemærk
AGG_FUNC
betyder aggregeringsfunktioner somMAX
,MIN
,COUNT
osv.
Denne syntaks bruges til at finde bestemte værdier ved hjælp af aggregeringsfunktioner i specifikke kolonner.
Lad os overveje et andet eksempel: vi har fået til opgave at finde den afdeling med den højeste gennemsnitlige løn.
For at hente sådanne data skal vi gruppere dataene efter kolonnen department
og derefter bruge funktionen AVG()
til at beregne den gennemsnitlige løn:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
I denne del af sektionen vil vi arbejde med Montreal Metro system-databasen, som indeholder tabellen metro_travel_time
.
Denne tabel vil indeholde information om stationens linje (line_name
), dens navn (station_name
), og den tid det tager for et tog at rejse fra én station til den næste (time_to_next_station
).
Her er, hvordan denne tabel ser ud samt et dataview i den:
Som du kan se, er dette ikke en kompleks tabel. Lad os overveje, hvor vi kan anvende gruppering her.
Den mest oplagte mulighed er gruppering efter farverne på metrolinjerne. Det betyder, at vi kan aggregere dataene ved at gruppere dem efter metrolinjens farve.
Alias
I opgaverne vil du ofte bruge et begreb kaldet et alias. Et alias er i bund og grund et "kælenavn" for en kolonne, du henter med en SELECT
-forespørgsel. Det angives med følgende syntaks:
SELECT column AS alias
Et alias påvirker kun, hvordan kolonnen vises i svaret.
For eksempel, i stedet for MAX(time)
, kan kolonnen kaldes max_time
, hvis du tildeler det alias. Dette gør outputtet mere læsbart og tydeligt.
Swipe to start coding
Din opgave er at finde den længste tid til næste station på hver linje. Dette gør det muligt at bestemme den længste rejsetid mellem stationer for hver metrolinje. For at gøre dette skal du bruge funktionen MAX()
og give den aliaset max_time
, og gruppere dataene efter kolonnen line_name
.
Korte instruktioner
- Hent kolonnen
line_name
og den maksimale værdi af kolonnentime_to_next_station
. - Tilføj aliaset
max_time
til den maksimale værdi. - Gruppér dataene efter kolonnen
line_name
.
Når du har udført denne opgave, skal du klikke på knappen under koden for at tjekke din løsning.
Løsning
Tak for dine kommentarer!
Awesome!
Completion rate improved to 4single