Group By-sats
Välkommen till kursen Intermediate SQL!
I den första sektionen kommer vi att utforska hur vi kan gruppera och aggregera data i våra tabeller.
Låt oss förstå vad "gruppering av data" innebär med ett enkelt exempel på en employees-tabell:
Gruppering av data
Vi har en uppgift att ta reda på antalet anställda i varje avdelning. För att göra detta kommer vi att gruppera data efter kolumnen department
och använda aggregering med funktionen COUNT(*)
.
Så här ser implementationen ut:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Som du kan se, ser syntaxen för att gruppera data ut så här:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Observera
AGG_FUNC
betyder aggregeringsfunktioner somMAX
,MIN
,COUNT
osv.
Denna syntax används för att hitta vissa värden med hjälp av aggregeringsfunktioner i specifika kolumner.
Låt oss titta på ett annat exempel: vi har fått i uppgift att hitta den avdelning med högst genomsnittlig lön.
För att hämta sådan data behöver vi gruppera data efter kolumnen department
och sedan använda funktionen AVG()
för att beräkna den genomsnittliga lönen:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
I denna del av avsnittet kommer vi att arbeta med Montreal Metro-systemets databas, som innehåller tabellen metro_travel_time
.
Denna tabell kommer att innehålla information om stationens linje (line_name
), dess namn (station_name
) och tiden det tar för ett tåg att resa från en station till nästa (time_to_next_station
).
Här är hur denna tabell ser ut och en datavisning i den:
Som du kan se är detta ingen komplex tabell. Låt oss fundera på var vi kan använda gruppering här.
Det mest uppenbara alternativet är gruppering efter färger på tunnelbanelinjer. Det innebär att vi kan aggregera data genom att gruppera den efter tunnelbanelinjens färg.
Alias
I uppgifterna kommer du ofta att använda ett koncept som kallas alias. Ett alias är i princip ett "smeknamn" för en kolumn som du hämtar med ett SELECT
-uttryck. Det anges med följande syntax:
SELECT column AS alias
Ett alias påverkar endast hur kolumnen visas i svaret.
Till exempel, istället för MAX(time)
kan kolumnen kallas max_time
om du tilldelar det aliaset. Detta gör utdata mer läsbar och tydlig.
Swipe to start coding
Din uppgift är att hitta den längsta tiden till nästa station på varje linje. Detta gör det möjligt att fastställa den längsta restiden mellan stationer för varje tunnelbanelinje. Använd MAX()
-funktionen och ge den aliaset max_time
, och gruppera data efter kolumnen line_name
.
Kortfattade instruktioner
- Hämta kolumnen
line_name
och det maximala värdet av kolumnentime_to_next_station
. - Lägg till aliaset
max_time
för det maximala värdet. - Gruppera data efter kolumnen
line_name
.
När du har slutfört denna uppgift, klicka på under koden för att kontrollera din lösning.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain more about aggregate functions in SQL?
How does the GROUP BY clause work with multiple columns?
Can you give more examples of using aliases in SQL queries?
Awesome!
Completion rate improved to 4
Group By-sats
Svep för att visa menyn
Välkommen till kursen Intermediate SQL!
I den första sektionen kommer vi att utforska hur vi kan gruppera och aggregera data i våra tabeller.
Låt oss förstå vad "gruppering av data" innebär med ett enkelt exempel på en employees-tabell:
Gruppering av data
Vi har en uppgift att ta reda på antalet anställda i varje avdelning. För att göra detta kommer vi att gruppera data efter kolumnen department
och använda aggregering med funktionen COUNT(*)
.
Så här ser implementationen ut:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Som du kan se, ser syntaxen för att gruppera data ut så här:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Observera
AGG_FUNC
betyder aggregeringsfunktioner somMAX
,MIN
,COUNT
osv.
Denna syntax används för att hitta vissa värden med hjälp av aggregeringsfunktioner i specifika kolumner.
Låt oss titta på ett annat exempel: vi har fått i uppgift att hitta den avdelning med högst genomsnittlig lön.
För att hämta sådan data behöver vi gruppera data efter kolumnen department
och sedan använda funktionen AVG()
för att beräkna den genomsnittliga lönen:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
I denna del av avsnittet kommer vi att arbeta med Montreal Metro-systemets databas, som innehåller tabellen metro_travel_time
.
Denna tabell kommer att innehålla information om stationens linje (line_name
), dess namn (station_name
) och tiden det tar för ett tåg att resa från en station till nästa (time_to_next_station
).
Här är hur denna tabell ser ut och en datavisning i den:
Som du kan se är detta ingen komplex tabell. Låt oss fundera på var vi kan använda gruppering här.
Det mest uppenbara alternativet är gruppering efter färger på tunnelbanelinjer. Det innebär att vi kan aggregera data genom att gruppera den efter tunnelbanelinjens färg.
Alias
I uppgifterna kommer du ofta att använda ett koncept som kallas alias. Ett alias är i princip ett "smeknamn" för en kolumn som du hämtar med ett SELECT
-uttryck. Det anges med följande syntax:
SELECT column AS alias
Ett alias påverkar endast hur kolumnen visas i svaret.
Till exempel, istället för MAX(time)
kan kolumnen kallas max_time
om du tilldelar det aliaset. Detta gör utdata mer läsbar och tydlig.
Swipe to start coding
Din uppgift är att hitta den längsta tiden till nästa station på varje linje. Detta gör det möjligt att fastställa den längsta restiden mellan stationer för varje tunnelbanelinje. Använd MAX()
-funktionen och ge den aliaset max_time
, och gruppera data efter kolumnen line_name
.
Kortfattade instruktioner
- Hämta kolumnen
line_name
och det maximala värdet av kolumnentime_to_next_station
. - Lägg till aliaset
max_time
för det maximala värdet. - Gruppera data efter kolumnen
line_name
.
När du har slutfört denna uppgift, klicka på under koden för att kontrollera din lösning.
Lösning
Tack för dina kommentarer!
Awesome!
Completion rate improved to 4single