Compter des données distinctes
Comme mentionné dans la vidéo, le module func de SQLAlchemy donne accès aux fonctions SQL intégrées qui rendent des opérations comme le comptage et l'addition plus rapides et plus efficaces.
Dans la vidéo, Jason a utilisé func.sum() pour obtenir la somme de la colonne pop2008 de census, comme ci-dessous :
select([func.sum(census.columns.pop2008)])
Si, plutôt, vous voulez compter le nombre de valeurs dans pop2008, vous pouvez utiliser func.count() ainsi :
select([func.count(census.columns.pop2008)])
De plus, si vous voulez uniquement compter les valeurs distinctes de pop2008, vous pouvez utiliser la méthode .distinct() :
select([func.count(census.columns.pop2008.distinct())])
Dans cet exercice, vous pratiquerez l'utilisation de func.count() et .distinct() pour obtenir le nombre de valeurs distinctes de l'attribut state dans census.
Jusqu'à présent, vous avez vu .fetchall(), .fetchmany() et .first() utilisées sur un ResultProxy pour obtenir les résultats. ResultProxy propose aussi une méthode appelée .scalar() pour récupérer uniquement la valeur d'une requête qui ne retourne qu'une seule ligne et une seule colonne.
C'est très pratique lorsque vous demandez seulement un total ou un nombre.
Cette activité fait partie du cours
Introduction aux bases de données en Python
Instructions de l’exercice
- Créez une instruction
selectpour compter les valeurs distinctes du champstatedanscensus. - Exécutez
stmtpour obtenir le nombre et stockez le résultat dansdistinct_state_count. - Affichez la valeur de
distinct_state_count.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Build a query to count the distinct states values: stmt
stmt = select([____])
# Execute the query and store the scalar result: distinct_state_count
distinct_state_count = connection.execute(____).scalar()
# Print the distinct_state_count
print(____)