Het totale percentage vrouwen bepalen
Je kunt functies en operatoren ook in één select-statement combineren.
Deze combinaties zijn erg handig als je percentages of gemiddelden wilt berekenen, en we kunnen ook de expressie case() gebruiken om te werken op gegevens die aan specifieke criteria voldoen zonder de query als geheel te beïnvloeden.
De expressie case() accepteert een lijst met te matchen voorwaarden en de kolom die moet worden geretourneerd als de voorwaarde matcht, gevolgd door een else_ als geen van de voorwaarden matcht. We kunnen deze hele expressie in elke gewenste functie of wiskundige bewerking plaatsen.
Als we met gehele getallen delen, willen we vaak een float terugkrijgen. Hoewel sommige databases dit automatisch doen, kun je de functie cast() gebruiken om een expressie naar een specifiek type te converteren.
Deze oefening maakt deel uit van de cursus
Introductie tot databases in Python
Oefeninstructies
- Importeer
case,castenFloatuitsqlalchemy. - Bouw een expressie
female_pop2000om de vrouwelijke bevolking in 2000 te berekenen. Doe dit als volgt:- Gebruik
case()binnenfunc.sum(). - Het eerste argument van
case()is een lijst met een tuple van- i) Een booleaan die controleert dat
census.columns.sexgelijk is aan'F'. - ii) De kolom
census.columns.pop2000.
- i) Een booleaan die controleert dat
- Het tweede argument is de
else_-voorwaarde, die je op 0 moet zetten.
- Gebruik
- Bereken de totale bevolking in 2000 en gebruik
cast()om deze naarFloatte converteren. - Bouw een query om het percentage vrouwen in 2000 te berekenen. Deel hiervoor
female_pop2000doortotal_pop2000en vermenigvuldig met100. - Voer de query uit en print
percent_female.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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(____)