Funkce a group_by s hierarchickými daty
Běžnou potřebou je také agregovat data uložená v hierarchické tabulce. Při agregaci je důležité sledovat, který alias používáš pro group_by a ze které tabulky voláš funkci.
Tvým úkolem je zjistit počet zaměstnanců pro každého manažera.
Toto cvičení je součástí kurzu
Introduction to Databases in Python
Pokyny k cvičení
- Ulož alias tabulky
employeesjakomanagers. - Sestavte dotaz, který vybere sloupec
namez tabulkymanagersa počet jejich zaměstnanců. K tomu se ti bude hodit funkcefunc.count()— použij ji k počítání sloupceidv tabulceemployees. - Pomocí klauzule
.where()vyfiltruj záznamy, kde se sloupecidtabulkymanagersrovná sloupcimgrtabulkyemployees. - Seskup výsledky dotazu podle sloupce
nametabulkymanagers. - Spusť dotaz a ulož všechny výsledky. Vypiš jména manažerů a počty jejich zaměstnanců. Tento kód už je napsaný — stačí odeslat odpověď a prohlédnout si výsledky!
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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)