Exploiter les fonctions et les group_by avec des données hiérarchiques
Il est également courant de vouloir agréger des données dans une table hiérarchique. Pour cela, il faut faire attention à l’alias utilisé pour les group_by et à la table appliquée à la fonction.
Ici, votre objectif est d’obtenir le nombre d’employés pour chaque responsable.
Cet exercice fait partie du cours
Introduction aux bases de données en Python
Instructions
- Enregistrez un alias de la table
employeessous le nommanagers. - Construisez une requête pour sélectionner la colonne
namede la tablemanagerset le nombre de leurs employés. La fonctionfunc.count()a été importée et vous sera utile ! Utilisez-la pour compter la colonneidde la tableemployees. - À l’aide d’une clause
.where(), filtrez les enregistrements où la colonneidde la tablemanagersest égale à la colonnemgrde la tableemployees. - Regroupez la requête par la colonne
namede la tablemanagers. - Exécutez l’instruction et stockez tous les résultats. Affichez le nom des responsables et leurs employés. Ce code est déjà écrit, alors Soumettre la réponse et consultez les résultats !
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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)