GROUP BY-Klausul
Velkommen til kurset Intermediate SQL!
I den første seksjonen skal vi dykke ned i hvordan vi kan gruppere og aggregere data i tabellene våre.
La oss forstå hva "gruppering av data" betyr ved å bruke et enkelt eksempel på en ansatttabell:
Gruppering av data
Vi har en oppgave å finne ut antall ansatte i hver avdeling. For å gjøre dette, vil vi gruppere dataene etter department
-kolonnen og bruke aggregering med COUNT(*)
-funksjonen.
Slik vil implementeringen se ut:
SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Så, som du kan se, syntaksen for å gruppere data ser slik ut:
sql
Merk
AGG_FUNC
betyr aggregeringsfunksjoner somMAX
,MIN
,COUNT
, etc.
Denne syntaksen eksisterer for å finne visse verdier ved hjelp av aggregeringsfunksjoner i spesifikke kolonner.
La oss vurdere et annet eksempel: vi har fått i oppgave å finne avdelingen med den høyeste gjennomsnittlige lønnen.
For å hente slike data, må vi gruppere dataene etter department
-kolonnen og deretter bruke AVG()
-funksjonen for å beregne gjennomsnittslønnen:
SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
I denne delen av seksjonen skal vi jobbe med Montreal Metro system database, som inneholder tabellen metro_travel_time
.
Denne tabellen vil inneholde informasjon om stasjonslinjen (line_name
), dens navn (station_name
), og mengden tid det tar for et tog å reise fra en stasjon til den neste (time_to_next_station
).
Her er hvordan denne tabellen ser ut og datavisningen i den:
Som du kan se, er dette ikke en kompleks tabell. La oss tenke på hvor vi kan bruke gruppering her.
Det mest åpenbare alternativet er gruppering etter fargene på metrolinjene. Det betyr at vi kan aggregere dataene, gruppere dem etter fargen på metrolinjen.
Alias
I oppgavene vil du ofte bruke et konsept kalt en alias. Et alias er i hovedsak et "kallenavn" for en kolonne du henter med en SELECT
-setning. Det spesifiseres ved å bruke følgende syntaks:
sql
Et alias påvirker bare hvordan kolonnen vises i svaret.
For eksempel, i stedet for MAX(time)
, kan kolonnen kalles max_time
hvis du tildeler det aliaset. Dette gjør utdataene mer lesbare og klare.
Swipe to start coding
Din oppgave er å finne den lengste tiden til neste stasjon på hver linje. Dette vil tillate oss å bestemme den lengste reisetiden mellom stasjoner for hver metrolinje. For å gjøre dette, bruk MAX()
-funksjonen og alias det som max_time
, og grupper dataene etter line_name
-kolonnen.
Kort instruksjon
- Hent
line_name
-kolonnen og maksimumsverdien avtime_to_next_station
-kolonnen. - Legg til aliaset
max_time
for maksimumsverdien. - Grupper dataene etter
line_name
-kolonnen.
Når du har fullført denne oppgaven, klikk på knappen under koden for å sjekke løsningen din.
Løsning
Takk for tilbakemeldingene dine!