Functies en group_bys benutten met hiërarchische data
Het is ook gebruikelijk om data in een hiërarchische tabel te willen aggregeren. Data aggregeren vereist dat je goed oplet welke alias je gebruikt voor de group_bys en welke tabel je gebruikt voor de functie.
Hier ga je het aantal medewerkers per manager ophalen.
Deze oefening maakt deel uit van de cursus
Introductie tot databases in Python
Oefeninstructies
- Sla een alias van de tabel
employeesop alsmanagers. - Bouw een query die de kolom
namevan de tabelmanagersselecteert en het aantal van hun medewerkers. De functiefunc.count()is geïmporteerd en komt van pas! Gebruik die om de kolomidvan de tabelemployeeste tellen. - Filter met een
.where()-clausule de records waar de kolomidvan de tabelmanagersgelijk is aan de kolommgrvan de tabelemployees. - Groepeer de query op de kolom
namevan de tabelmanagers. - Voer het statement uit en sla alle resultaten op. Print de namen van de managers en hun medewerkers. Deze code is al geschreven, dus Antwoord verzenden en bekijk de resultaten!
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Make an alias of the employees table: managers
managers = ____
# Build a query to select names of managers and counts of their employees: stmt
stmt = select([____, func.count(____)])
# Append a where clause that ensures the manager id and employee mgr are equal
stmt_matched = stmt.____
# Group by Managers Name
stmt_grouped = stmt_matched.group_by(____)
# Execute statement: results
results = connection.execute(stmt_grouped).fetchall()
# print manager
for record in results:
print(record)