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
Instruções do exercício
- Importe
case,casteFloatdesqlalchemy. - Construa uma expressão
female_pop2000para calcular a população feminina em 2000. Para isso:- Use
case()dentro defunc.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.
- i) Um booleano verificando que
- O segundo argumento é a condição
else_, que deve ser definida como 0.
- Use
- Calcule a população total em 2000 e use
cast()para convertê-la paraFloat. - Monte uma consulta para calcular a porcentagem de mulheres em 2000. Para isso, divida
female_pop2000portotal_pop2000e multiplique por100. - 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(____)