Calcular el porcentaje total de mujeres
También es posible combinar funciones y operadores en una sola sentencia select.
Estas combinaciones son especialmente útiles cuando queremos calcular porcentajes o
promedios, y además podemos usar la expresión case() para operar
sobre datos que cumplen ciertos criterios sin afectar a la consulta en su conjunto.
La expresión case() acepta una lista de condiciones a comprobar y la columna que
devolver si la condición se cumple, seguida de un else_ si ninguna de las condiciones
coincide. Podemos envolver toda esta expresión en cualquier función u operación matemática que queramos.
A menudo, cuando hacemos divisiones entre enteros, queremos obtener un float. Aunque algunas bases de datos
lo hacen automáticamente, puedes usar la función cast() para convertir una
expresión a un tipo concreto.
Este ejercicio forma parte del curso
Introducción a las bases de datos en Python
Instrucciones del ejercicio
- Importa
case,castyFloatdesdesqlalchemy. - Construye una expresión
female_pop2000para calcular la población femenina en 2000. Para ello:- Usa
case()dentro defunc.sum(). - El primer argumento de
case()es una lista que contiene una tupla con:- i) Un booleano que compruebe que
census.columns.sexes igual a'F'. - ii) La columna
census.columns.pop2000.
- i) Un booleano que compruebe que
- El segundo argumento es la condición
else_, que debe establecerse en 0.
- Usa
- Calcula la población total en 2000 y usa
cast()para convertirla aFloat. - Construye una consulta para calcular el porcentaje de mujeres en 2000. Para hacerlo, divide
female_pop2000entretotal_pop2000y multiplica por100. - Ejecuta la consulta e imprime
percent_female.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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(____)