Calcularea procentului general al femeilor
Este posibil să combini funcții și operatori într-o singură instrucțiune SELECT.
Aceste combinații sunt extrem de utile când vrei să calculezi procente sau
medii. De asemenea, poți folosi expresia case() pentru a opera
asupra datelor care îndeplinesc criterii specifice, fără a afecta interogarea în ansamblu.
Expresiile case() acceptă o listă de condiții de verificat și coloana de
returnat dacă condiția este îndeplinită, urmată de un else_ în cazul în care nicio condiție
nu corespunde. Poți înveli această expresie în orice funcție sau operație matematică dorești.
Atunci când efectuezi împărțiri între numere întregi, de obicei vei dori să obții un rezultat de tip float. Deși unele baze de date
fac acest lucru automat, poți folosi funcția cast() pentru a converti o
expresie la un anumit tip.
Acest exercițiu face parte din cursul
Introducere în baze de date în Python
Instrucțiuni pentru exercițiu
- Importă
case,castșiFloatdinsqlalchemy. - Construiește o expresie
female_pop2000pentru a calcula populația feminină în anul 2000. Pentru a face acest lucru:- Folosește
case()în interiorul luifunc.sum(). - Primul argument al lui
case()este o listă care conține un tuplu format din:- i) O condiție booleană care verifică dacă
census.columns.sexeste egal cu'F'. - ii) Coloana
census.columns.pop2000.
- i) O condiție booleană care verifică dacă
- Al doilea argument este condiția
else_, care trebuie setată la 0.
- Folosește
- Calculează populația totală în 2000 și folosește
cast()pentru a o converti laFloat. - Construiește o interogare care să calculeze procentul femeilor în 2000. Pentru aceasta, împarte
female_pop2000latotal_pop2000și înmulțește cu100. - Execută interogarea și afișează
percent_female.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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(____)