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
Instructions de l’exercice
- Importez
case,castetFloatdepuissqlalchemy. - Créez une expression
female_pop2000pour calculer la population féminine en 2000. Pour ce faire :- Utilisez
case()à l'intérieur defunc.sum(). - Le premier argument de
case()est une liste contenant un tuple composé de- i) Un booléen qui vérifie que
census.columns.sexest égal à'F'. - ii) La colonne
census.columns.pop2000.
- i) Un booléen qui vérifie que
- Le deuxième argument est la condition
else_, qui doit être fixée à 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 ce faire, divisez
female_pop2000partotal_pop2000et multipliez par100. - 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(____)