ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Importa case, cast y Float desde sqlalchemy.
  • Construye una expresión female_pop2000 para calcular la población femenina en 2000. Para ello:
    • Usa case() dentro de func.sum().
    • El primer argumento de case() es una lista que contiene una tupla con:
      • i) Un booleano que compruebe que census.columns.sex es igual a 'F'.
      • ii) La columna census.columns.pop2000.
    • El segundo argumento es la condición else_, que debe establecerse en 0.
  • Calcula la población total en 2000 y usa cast() para convertirla a Float.
  • Construye una consulta para calcular el porcentaje de mujeres en 2000. Para hacerlo, divide female_pop2000 entre total_pop2000 y multiplica por 100.
  • 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(____)
Editar y ejecutar código