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 peuvent rendre des opérations comme le comptage et la somme 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, à la place, 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 souhaitez 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 allez vous entraîner à utiliser func.count() et .distinct() pour obtenir le nombre d’États distincts dans census.
Jusqu’ici, vous avez vu .fetchall(), .fetchmany() et .first() utilisées sur un ResultProxy pour récupérer les résultats. ResultProxy possède aussi une méthode appelée .scalar() pour obtenir uniquement la valeur d’une requête qui ne renvoie qu’une seule ligne et une seule colonne.
C’est très utile lorsque vous interrogez uniquement un total ou un comptage.
Cet exercice fait partie du cours
Introduction aux bases de données en Python
Instructions
- Construisez une instruction
selectpour compter les valeurs distinctes du champstatedecensus. - Exécutez
stmtpour obtenir le comptage et stockez le résultat dansdistinct_state_count. - Affichez la valeur de
distinct_state_count.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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(____)