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
Instructions
- Importez
case,castetFloatdepuissqlalchemy. - Créez une expression
female_pop2000pour calculer la population féminine en 2000. Pour cela :- Utilisez
case()à l’intérieur defunc.sum(). - Le premier argument de
case()est une liste contenant un tuple de- i) Un booléen vérifiant que
census.columns.sexest égal à'F'. - ii) La colonne
census.columns.pop2000.
- i) Un booléen vérifiant que
- Le second argument est la condition
else_, qui doit être définie à 0.
- Utilisez
- Calculez la population totale en 2000 et utilisez
cast()pour la convertir enFloat. - Construisez une requête pour calculer le pourcentage de femmes en 2000. Pour cela, divisez
female_pop2000partotal_pop2000et multipliez par100. - 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(____)