Group By-clausule
Welkom bij de Intermediate SQL cursus!
In de eerste sectie behandelen we hoe we gegevens kunnen groeperen en aggregeren binnen onze tabellen.
Laten we begrijpen wat "gegevens groeperen" betekent aan de hand van een eenvoudig voorbeeld van een employees-tabel:
Gegevens groeperen
We hebben als taak om het aantal werknemers per afdeling te achterhalen. Hiervoor groeperen we de gegevens op de kolom department
en gebruiken we aggregatie met de functie COUNT(*)
.
Zo ziet de implementatie eruit:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Zoals te zien is, de syntaxis voor het groeperen van gegevens ziet er als volgt uit:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Opmerking
AGG_FUNC
betekent aggregatiefuncties zoalsMAX
,MIN
,COUNT
, enz.
Deze syntaxis bestaat om bepaalde waarden te vinden met behulp van aggregatiefuncties in specifieke kolommen.
Laten we een ander voorbeeld bekijken: we hebben de taak gekregen om het departement met het hoogste gemiddelde salaris te vinden.
Om dergelijke gegevens op te halen, moeten we de gegevens groeperen op de kolom department
en vervolgens de functie AVG()
gebruiken om het gemiddelde salaris te berekenen:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
In dit gedeelte van de sectie werken we met de Montreal Metro-systeemdatabase, die de tabel metro_travel_time
bevat.
Deze tabel bevat informatie over de metrolijn (line_name
), de naam ervan (station_name
), en de tijdsduur die een trein nodig heeft om van het ene station naar het volgende te reizen (time_to_next_station
).
Hier zie je hoe deze tabel eruitziet en een voorbeeld van de gegevens erin:
Zoals je ziet, is dit geen complexe tabel. Laten we nadenken over waar we hier groepering kunnen toepassen.
De meest voor de hand liggende optie is groeperen op de kleuren van metrolijnen. Dat betekent dat we de gegevens kunnen aggregeren door ze te groeperen op de kleur van de metrolijn.
Alias
In de opdrachten maak je vaak gebruik van een concept dat een alias wordt genoemd. Een alias is in feite een "bijnaam" voor een kolom die je ophaalt met een SELECT
-statement. Het wordt gespecificeerd met de volgende syntaxis:
SELECT column AS alias
Een alias beïnvloedt alleen hoe de kolom in het resultaat wordt weergegeven.
Bijvoorbeeld, in plaats van MAX(time)
kan de kolom max_time
worden genoemd als je die alias toewijst. Dit maakt de uitvoer leesbaarder en duidelijker.
Swipe to start coding
Je taak is om de langste tijd tot het volgende station op elke lijn te vinden. Hiermee kunnen we de langste reistijd tussen stations voor elke metrolijn bepalen. Gebruik hiervoor de functie MAX()
en geef deze de alias max_time
, waarbij je de gegevens groepeert op de kolom line_name
.
Korte instructies
- Haal de kolom
line_name
en de maximale waarde van de kolomtime_to_next_station
op. - Voeg de alias
max_time
toe aan de maximale waarde. - Groepeer de gegevens op de kolom
line_name
.
Als je deze taak hebt voltooid, klik dan op de knop onder de code om je oplossing te controleren.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 4
Group By-clausule
Veeg om het menu te tonen
Welkom bij de Intermediate SQL cursus!
In de eerste sectie behandelen we hoe we gegevens kunnen groeperen en aggregeren binnen onze tabellen.
Laten we begrijpen wat "gegevens groeperen" betekent aan de hand van een eenvoudig voorbeeld van een employees-tabel:
Gegevens groeperen
We hebben als taak om het aantal werknemers per afdeling te achterhalen. Hiervoor groeperen we de gegevens op de kolom department
en gebruiken we aggregatie met de functie COUNT(*)
.
Zo ziet de implementatie eruit:
123SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
Zoals te zien is, de syntaxis voor het groeperen van gegevens ziet er als volgt uit:
SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Opmerking
AGG_FUNC
betekent aggregatiefuncties zoalsMAX
,MIN
,COUNT
, enz.
Deze syntaxis bestaat om bepaalde waarden te vinden met behulp van aggregatiefuncties in specifieke kolommen.
Laten we een ander voorbeeld bekijken: we hebben de taak gekregen om het departement met het hoogste gemiddelde salaris te vinden.
Om dergelijke gegevens op te halen, moeten we de gegevens groeperen op de kolom department
en vervolgens de functie AVG()
gebruiken om het gemiddelde salaris te berekenen:
123SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
In dit gedeelte van de sectie werken we met de Montreal Metro-systeemdatabase, die de tabel metro_travel_time
bevat.
Deze tabel bevat informatie over de metrolijn (line_name
), de naam ervan (station_name
), en de tijdsduur die een trein nodig heeft om van het ene station naar het volgende te reizen (time_to_next_station
).
Hier zie je hoe deze tabel eruitziet en een voorbeeld van de gegevens erin:
Zoals je ziet, is dit geen complexe tabel. Laten we nadenken over waar we hier groepering kunnen toepassen.
De meest voor de hand liggende optie is groeperen op de kleuren van metrolijnen. Dat betekent dat we de gegevens kunnen aggregeren door ze te groeperen op de kleur van de metrolijn.
Alias
In de opdrachten maak je vaak gebruik van een concept dat een alias wordt genoemd. Een alias is in feite een "bijnaam" voor een kolom die je ophaalt met een SELECT
-statement. Het wordt gespecificeerd met de volgende syntaxis:
SELECT column AS alias
Een alias beïnvloedt alleen hoe de kolom in het resultaat wordt weergegeven.
Bijvoorbeeld, in plaats van MAX(time)
kan de kolom max_time
worden genoemd als je die alias toewijst. Dit maakt de uitvoer leesbaarder en duidelijker.
Swipe to start coding
Je taak is om de langste tijd tot het volgende station op elke lijn te vinden. Hiermee kunnen we de langste reistijd tussen stations voor elke metrolijn bepalen. Gebruik hiervoor de functie MAX()
en geef deze de alias max_time
, waarbij je de gegevens groepeert op de kolom line_name
.
Korte instructies
- Haal de kolom
line_name
en de maximale waarde van de kolomtime_to_next_station
op. - Voeg de alias
max_time
toe aan de maximale waarde. - Groepeer de gegevens op de kolom
line_name
.
Als je deze taak hebt voltooid, klik dan op de knop onder de code om je oplossing te controleren.
Oplossing
Bedankt voor je feedback!
Awesome!
Completion rate improved to 4single