Функции и 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)