CommencerCommencer gratuitement

Déterminer le pourcentage global de femmes

Il est également possible de combiner des fonctions et des opérateurs dans une seule instruction select. Ces combinaisons sont particulièrement pratiques lorsque l’on souhaite calculer des pourcentages ou des moyennes. On peut aussi utiliser l’expression case() pour agir sur des 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. Nous pouvons encapsuler cette expression dans n’importe quelle fonction ou opération mathématique que nous souhaitons.

Lorsqu’on effectue une division entière, on souhaite souvent obtenir un float. Certaines bases de données le font automatiquement, mais vous pouvez utiliser la fonction cast() pour convertir une expression vers un type particulier.

Cet exercice fait partie du cours

Introduction aux bases de données en Python

Afficher le cours

Instructions

  • Importez case, cast et Float depuis sqlalchemy.
  • Créez une expression female_pop2000 pour calculer la population féminine en 2000. Pour cela :
    • Utilisez case() à l’intérieur de func.sum().
    • Le premier argument de case() est une liste contenant un tuple de
      • i) Un booléen vérifiant que census.columns.sex est égal à 'F'.
      • ii) La colonne census.columns.pop2000.
    • Le second argument est la condition else_, qui doit être définie à 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 cela, 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 cet exemple de code.

# 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