CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Créez une instruction select pour compter les valeurs distinctes du champ state dans census.
  • Exécutez stmt pour obtenir le nombre et stockez le résultat dans distinct_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(____)
Modifier et exécuter le code