CommencezCommencez gratuitement

Déterminer le pourcentage global de femmes

Il est aussi possible de combiner des fonctions et des opérateurs dans une seule instruction select. Ces combinaisons sont particulièrement pratiques lorsqu'on veut calculer des pourcentages ou des moyennes, et on peut également utiliser l'expression case() pour agir sur les données qui répondent à des critères précis sans affecter l'ensemble de la requête. L'expression case() accepte une liste de conditions à vérifier et la colonne à retourner si la condition est satisfaite, suivie d'un else_ si aucune condition ne correspond. On peut intégrer toute cette expression dans n'importe quelle fonction ou opération mathématique désirée.

Souvent, lorsqu'on effectue une division entière, on souhaite obtenir un nombre à virgule (float). Bien que certaines bases de données le fassent automatiquement, vous pouvez utiliser la fonction cast() pour convertir une expression vers un type particulier.

Cette activité fait partie du cours

Introduction aux bases de données en Python

Voir le cours

Instructions de l’exercice

  • Importez case, cast et Float depuis sqlalchemy.
  • Créez une expression female_pop2000 pour calculer la population féminine en 2000. Pour ce faire :
    • Utilisez case() à l'intérieur de func.sum().
    • Le premier argument de case() est une liste contenant un tuple composé de
      • i) Un booléen qui vérifie que census.columns.sex est égal à 'F'.
      • ii) La colonne census.columns.pop2000.
    • Le deuxième argument est la condition else_, qui doit être fixée à 0.
  • Calculez la population totale en 2000 et utilisez cast() pour la convertir en Float.
  • Construisez une requête pour calculer le pourcentage de femmes en 2000. Pour ce faire, divisez female_pop2000 par total_pop2000 et multipliez par 100.
  • Exécutez la requête et affichez percent_female.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# import case, cast and Float from sqlalchemy
from sqlalchemy import ____, ____, ____

# Build an expression to calculate female population in 2000
female_pop2000 = func.sum(
    ____([
        (____ == ____, ____)
    ], else_=____))

# Cast an expression to calculate total population in 2000 to Float
total_pop2000 = cast(func.sum(____), ____)

# Build a query to calculate the percentage of women in 2000: stmt
stmt = select([____ / ____* 100])

# Execute the query and store the scalar result: percent_female
percent_female = connection.execute(____).scalar()

# Print the percentage
print(____)
Modifier et exécuter le code