Group By-setning
Velkommen til Intermediate SQL-kurset!
I den første seksjonen skal vi utforske hvordan vi kan gruppere og aggregere data i tabellene våre.
La oss forstå hva "gruppering av data" betyr ved å bruke et enkelt eksempel med en employees-tabell:
Gruppering av data
Vi har en oppgave med å finne ut hvor mange ansatte det er i hver avdeling. For å gjøre dette, skal vi gruppere dataene etter kolonnen department
og bruke aggregering med funksjonen COUNT(*)
.
Slik vil implementeringen se ut:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Som du kan se, syntaksen for å gruppere data ser slik ut:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Merk
AGG_FUNC
betyr aggregeringsfunksjoner somMAX
,MIN
,COUNT
, osv.
Denne syntaksen brukes for å finne bestemte verdier ved hjelp av aggregeringsfunksjoner i spesifikke kolonner.
La oss se på et annet eksempel: vi har fått i oppgave å finne avdelingen med høyest gjennomsnittslønn.
For å hente ut slike data må vi gruppere dataene etter kolonnen department
og deretter bruke funksjonen AVG()
for å beregne gjennomsnittslønnen:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
I denne delen av seksjonen skal vi arbeide med Montreal Metro-systemets database, som inneholder tabellen metro_travel_time
.
Denne tabellen vil inneholde informasjon om stasjonslinjen (line_name
), dens navn (station_name
), og tiden det tar for et tog å reise fra én stasjon til den neste (time_to_next_station
).
Her ser du hvordan denne tabellen ser ut og et datainnholdseksempel i den:
Som du ser, er dette ikke en kompleks tabell. La oss vurdere hvor vi kan bruke gruppering her.
Det mest åpenbare alternativet er gruppering etter fargene på metrolinjene. Det betyr at vi kan aggregere dataene ved å gruppere dem etter fargen på metrolinjen.
Alias
I oppgavene vil du ofte bruke et konsept kalt alias. Et alias er i praksis et "kallenavn" for en kolonne du henter med en SELECT
-setning. Det angis 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 kalles max_time
hvis du gir den det aliaset. Dette gjør resultatet mer lesbart og tydelig.
Swipe to start coding
Din oppgave er å finne den lengste tiden til neste stasjon på hver linje. Dette gjør det mulig å fastslå lengste reisetid mellom stasjoner for hver metrolinje. For å gjøre dette, bruk funksjonen MAX()
og gi den aliaset max_time
, og grupper dataene etter kolonnen line_name
.
Korte instruksjoner
- Hent kolonnen
line_name
og den maksimale verdien av kolonnentime_to_next_station
. - Legg til aliaset
max_time
for maksimumsverdien. - Grupper dataene etter kolonnen
line_name
.
Når du har fullført denne oppgaven, klikk på -knappen under koden for å sjekke løsningen din.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 4
Group By-setning
Sveip for å vise menyen
Velkommen til Intermediate SQL-kurset!
I den første seksjonen skal vi utforske hvordan vi kan gruppere og aggregere data i tabellene våre.
La oss forstå hva "gruppering av data" betyr ved å bruke et enkelt eksempel med en employees-tabell:
Gruppering av data
Vi har en oppgave med å finne ut hvor mange ansatte det er i hver avdeling. For å gjøre dette, skal vi gruppere dataene etter kolonnen department
og bruke aggregering med funksjonen COUNT(*)
.
Slik vil implementeringen se ut:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Som du kan se, syntaksen for å gruppere data ser slik ut:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Merk
AGG_FUNC
betyr aggregeringsfunksjoner somMAX
,MIN
,COUNT
, osv.
Denne syntaksen brukes for å finne bestemte verdier ved hjelp av aggregeringsfunksjoner i spesifikke kolonner.
La oss se på et annet eksempel: vi har fått i oppgave å finne avdelingen med høyest gjennomsnittslønn.
For å hente ut slike data må vi gruppere dataene etter kolonnen department
og deretter bruke funksjonen AVG()
for å beregne gjennomsnittslønnen:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
I denne delen av seksjonen skal vi arbeide med Montreal Metro-systemets database, som inneholder tabellen metro_travel_time
.
Denne tabellen vil inneholde informasjon om stasjonslinjen (line_name
), dens navn (station_name
), og tiden det tar for et tog å reise fra én stasjon til den neste (time_to_next_station
).
Her ser du hvordan denne tabellen ser ut og et datainnholdseksempel i den:
Som du ser, er dette ikke en kompleks tabell. La oss vurdere hvor vi kan bruke gruppering her.
Det mest åpenbare alternativet er gruppering etter fargene på metrolinjene. Det betyr at vi kan aggregere dataene ved å gruppere dem etter fargen på metrolinjen.
Alias
I oppgavene vil du ofte bruke et konsept kalt alias. Et alias er i praksis et "kallenavn" for en kolonne du henter med en SELECT
-setning. Det angis 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 kalles max_time
hvis du gir den det aliaset. Dette gjør resultatet mer lesbart og tydelig.
Swipe to start coding
Din oppgave er å finne den lengste tiden til neste stasjon på hver linje. Dette gjør det mulig å fastslå lengste reisetid mellom stasjoner for hver metrolinje. For å gjøre dette, bruk funksjonen MAX()
og gi den aliaset max_time
, og grupper dataene etter kolonnen line_name
.
Korte instruksjoner
- Hent kolonnen
line_name
og den maksimale verdien av kolonnentime_to_next_station
. - Legg til aliaset
max_time
for maksimumsverdien. - Grupper dataene etter kolonnen
line_name
.
Når du har fullført denne oppgaven, klikk på -knappen under koden for å sjekke løsningen din.
Løsning
Takk for tilbakemeldingene dine!
Awesome!
Completion rate improved to 4single