Använda funktioner och group_by med hierarkisk data
Det är också vanligt att vilja aggregera data som finns i en hierarkisk tabell. Vid sådan aggregering är det viktigt att hålla koll på vilket alias du använder för group_by och vilken tabell du använder för funktionen.
Här är din uppgift att räkna antalet anställda per chef.
Den här övningen är en del av kursen
Introduktion till databaser i Python
Övningsinstruktioner
- Spara ett alias för tabellen
employeessommanagers. - Bygg en fråga som väljer kolumnen
namefrån tabellenmanagerssamt antalet anställda för varje chef. Funktionenfunc.count()har importerats och kommer vara användbar! Använd den för att räkna kolumnenidi tabellenemployees. - Använd en
.where()-klausul för att filtrera posterna där kolumnenidi tabellenmanagersär lika med kolumnenmgri tabellenemployees. - Gruppera frågan efter kolumnen
namei tabellenmanagers. - Kör satsen och lagra alla resultat. Skriv ut namnen på cheferna och deras anställda. Den koden är redan skriven, så skicka in svaret och ta en titt på resultaten!
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)