Ga naar inhoud

Header

Groeperen met GROUP BY - Opdrachten

1. Groeperen op voornaam van acteurs

Maak de volgende query af om op de voornaam van acteurs (kolom first_name) uit tabel actors te groeperen.

Tel daarbij het aantal rijen.

Hiermee krijg je te zien hoeveel acteurs er met een bepaalde voornaam zijn.

  • Gebruik het GROUP BY statement om te groeperen.
  • Gebruik de COUNT() functie om het aantal rijen te tellen.
SELECT
  first_name,
  COUNT(*)
FROM
  actors
GROUP BY
  first_name;
first_name count
Giovanni 1
Carly 1
Ewan (I) 1
... ...
Edward 3
Liam 5
... ...
Columns: 2
Rows: 1.198




2. Hernoemen van een kolom

In de vorige opdracht hebben we bepaald hoe vaak een bepaalde voornaam voorkomt in tabel actors.

Vanuit GROUP BY en COUNT() krijgt de nieuwe kolom standaard de naam count.

Dit gaan we aanpassen, door de kolom te hernoemen.

  • Hergebruik je code uit de vorige opdracht.
  • Hernoem de colom count naar first_name_count.
  • Maak gebruik van het AS statement.
SELECT
  first_name,
  COUNT(*) AS first_name_count
FROM
  actors
GROUP BY
  first_name;
first_name first_name_count
Giovanni 1
Carly 1
Ewan (I) 1
... ...
Edward 3
Liam 5
... ...
Columns: 2
Rows: 1.198




3. Sorteren na groeperen

In de vorige opdrachten hebben we bepaald hoe vaak een bepaalde voornaam voorkomt in tabel actors, en hebben we de kolomnaam veranderd.

Je kunt nog niet zo makkelijk zien welke voornaam het vaakst voorkomt. Dit omdat er nog niet gesorteerd is.

Dit gaan we verbeteren, door op kolom first_name_count te sorteren.

  • Hergebruik je code uit de vorige opdracht.
  • Sortereer aflopend op kolom first_name_count.
    • Gebruik hiervoor het ORDER BY statement.

Welke naam komt het vaakst voor?

SELECT
  first_name,
  COUNT(*) AS first_name_count
FROM
  actors
GROUP BY
  first_name
ORDER BY
  COUNT(*) DESC;
first_name first_name_count
John 32
Michael 23
James 15
... ...
Columns: 2
Rows: 1.198




4. Filteren na groeperen

Tot nu toe hebben we gedaan: * Groeperen op kolom first_name. * Kolomnaam count aanpassen naar first_name_count. * Aflopend sorteren op de nieuwe kolom.

We gaan nu een filter toepassen na het sorteren. Zodat alleen namen die vaker dan 10 keer voorkomen getoond worden.

  • Hergebruik je code uit de vorige opdracht.
  • Filter op de nieuwe kolom.
    • Gebruik het HAVING statement.
      • Let op dat je dit op de juiste plaats toepast.
SELECT
  first_name,
  COUNT(*) AS first_name_count
FROM
  actors
GROUP BY
  first_name
HAVING
  COUNT(*) > 10
ORDER BY
  COUNT(*) DESC;
first_name first_name_count
John 32
Michael 23
James 15
Peter 15
David 14
John (I) 14
Mark 13
Richard 11
Steve 11
Columns: 2
Rows: 9




5. (Extra) Groeperen op voornaam en geslacht

Tot nu toe hebben we voor zowel vrouwelijke als mannelijke acteurs gegroepeerd op voornaam. Dit zonder onderscheid te maken.

Schrijf nu een query waarmee je naast op kolom first_name, ook op kolom gender te groeperen.

  • Selecteer bestaande kolommen first_name en gender.
  • Groepeer op kolommen first_name en gender.
  • Tel het aantal rijen met COUNT(*)
  • Sorteer:
    • Op de nieuwe kolom, aflopend.
    • Op gender, oplopend.
SELECT
  first_name,
  gender,
  COUNT(*) AS first_name_count
FROM
  actors
GROUP BY
  gender, first_name
ORDER BY
  COUNT(*) DESC,
  gender ASC;
first_name gender first_name_count
John M 32
Michael M 23
James M 15
... ... ...
Columns: 3
Rows: 1.203




6. (Extra) Meestvoorkomende vrouwelijke voornamen

Tot nu toe hebben we voor zowel vrouwelijke als mannelijke acteurs gegroepeerd op voornaam.

Schrijf nu een query waarmee je de top 10 meest voorkomende vrouwelijke voornamen verkrijgt.

SELECT
  first_name,
  COUNT(*) AS first_name_count
FROM
  actors
WHERE
  gender = 'F'
GROUP BY
  first_name
ORDER BY
  COUNT(*) DESC
LIMIT
  10;
first_name first_name_count
Maria 6
Jennifer 5
Karen 4
Linda 4
Amy 4
Julie 4
Lori 4
Julia 4
Alexandra 3
Lisa 3
Columns: 2
Rows: 10