НачатьНачать бесплатно

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

Редактировать и запускать код