Використання функцій і group_by з ієрархічними даними
Часто потрібно агрегувати дані в ієрархічній таблиці. Для цього важливо уважно обирати, який псевдонім використовувати для group_by і до якої таблиці застосовувати функцію.
Ваше завдання — отримати кількість працівників для кожного менеджера.
Ця вправа є частиною курсу
Вступ до баз даних у Python
Інструкції до вправи
- Збережіть псевдонім таблиці
employeesпід назвоюmanagers. - Побудуйте запит, щоб вибрати стовпець
nameз таблиціmanagersі підрахунок їхніх працівників. Функціяfunc.count()вже імпортована — скористайтеся нею, щоб порахувати стовпецьidтаблиціemployees. - За допомогою
.where()відфільтруйте записи, де стовпецьidтаблиціmanagersдорівнює стовпцюmgrтаблиціemployees. - Згрупуйте запит за стовпцем
nameтаблиціmanagers. - Виконайте інструкцію та збережіть усі результати. Надрукуйте імена менеджерів і їхніх працівників. Цей код уже написано, тож надішліть відповідь і перегляньте результати!
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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)