ComeçarComece de graça

Determinando a porcentagem geral de mulheres

Também é possível combinar funções e operadores em um único comando select. Essas combinações são muito úteis quando queremos calcular porcentagens ou médias, e também podemos usar a expressão case() para operar sobre dados que atendem a critérios específicos sem afetar a consulta como um todo. A expressão case() aceita uma lista de condições a verificar e a coluna a retornar se a condição corresponder, seguida por um else_ se nenhuma das condições corresponder. Podemos envolver toda essa expressão em qualquer função ou operação matemática que quisermos.

Muitas vezes, ao realizar divisão de inteiros, queremos obter um float como resultado. Embora alguns bancos de dados façam isso automaticamente, você pode usar a função cast() para converter uma expressão para um tipo específico.

Este exercício faz parte do curso

Introdução a Bancos de Dados em Python

Ver curso

Instruções do exercício

  • Importe case, cast e Float de sqlalchemy.
  • Construa uma expressão female_pop2000 para calcular a população feminina em 2000. Para isso:
    • Use case() dentro de func.sum().
    • O primeiro argumento de case() é uma lista contendo uma tupla com
      • i) Um booleano verificando que census.columns.sex é igual a 'F'.
      • ii) A coluna census.columns.pop2000.
    • O segundo argumento é a condição else_, que deve ser definida como 0.
  • Calcule a população total em 2000 e use cast() para convertê-la para Float.
  • Monte uma consulta para calcular a porcentagem de mulheres em 2000. Para isso, divida female_pop2000 por total_pop2000 e multiplique por 100.
  • Execute a consulta e imprima percent_female.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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 e executar o código