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 om å 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_FUNCbetyr 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 inneholder informasjon om stasjonslinje (line_name), navn (station_name), og tiden det tar for et tog å reise fra én stasjon til den neste (time_to_next_station).
Slik ser denne tabellen ut og her er en datavisning av 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 etter fargen på metrolinjen.
Alias
I oppgavene vil du ofte bruke et konsept kalt alias. Et alias er i hovedsak 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 det aliaset. Dette gjør utdataene mer lesbare og tydelige.
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 MAX()-funksjonen og gi den aliaset max_time, og grupper dataene etter kolonnen line_name.
Kort instruksjon
- Hent kolonnen
line_nameog maksimumsverdien fra kolonnentime_to_next_station. - Legg til aliaset
max_timefor 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
Fantastisk!
Completion rate forbedret til 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 om å 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_FUNCbetyr 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 inneholder informasjon om stasjonslinje (line_name), navn (station_name), og tiden det tar for et tog å reise fra én stasjon til den neste (time_to_next_station).
Slik ser denne tabellen ut og her er en datavisning av 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 etter fargen på metrolinjen.
Alias
I oppgavene vil du ofte bruke et konsept kalt alias. Et alias er i hovedsak 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 det aliaset. Dette gjør utdataene mer lesbare og tydelige.
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 MAX()-funksjonen og gi den aliaset max_time, og grupper dataene etter kolonnen line_name.
Kort instruksjon
- Hent kolonnen
line_nameog maksimumsverdien fra kolonnentime_to_next_station. - Legg til aliaset
max_timefor 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