Determinare la percentuale complessiva di donne
È possibile combinare funzioni e operatori in un'unica istruzione select.
Queste combinazioni sono molto utili quando vogliamo calcolare percentuali o
medie, e possiamo anche usare l'espressione case() per operare
sui dati che soddisfano criteri specifici senza influenzare l'intera query.
L'espressione case() accetta un elenco di condizioni da verificare e la colonna da
restituire se la condizione è soddisfatta, seguita da un else_ se nessuna condizione
è soddisfatta. Possiamo racchiudere l'intera espressione in qualsiasi funzione o operazione matematica vogliamo.
Spesso, quando eseguiamo divisioni tra interi, vogliamo ottenere un float. Anche se alcuni database
lo fanno automaticamente, puoi usare la funzione cast() per convertire un'
espressione in un tipo specifico.
Questo esercizio fa parte del corso
Introduzione ai database in Python
Istruzioni dell'esercizio
- Importa
case,casteFloatdasqlalchemy. - Crea un'espressione
female_pop2000per calcolare la popolazione femminile nel 2000. Per farlo:- Usa
case()dentrofunc.sum(). - Il primo argomento di
case()è una lista contenente una tupla di- i) Un booleano che verifica che
census.columns.sexsia uguale a'F'. - ii) La colonna
census.columns.pop2000.
- i) Un booleano che verifica che
- Il secondo argomento è la condizione
else_, che deve essere impostata a 0.
- Usa
- Calcola la popolazione totale nel 2000 e usa
cast()per convertirla inFloat. - Crea una query per calcolare la percentuale di donne nel 2000. Per farlo, dividi
female_pop2000pertotal_pop2000e moltiplica per100. - Esegui la query e stampa
percent_female.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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(____)