Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Importeer case, cast en Float uit sqlalchemy.
  • Bouw een expressie female_pop2000 om de vrouwelijke bevolking in 2000 te berekenen. Doe dit als volgt:
    • Gebruik case() binnen func.sum().
    • Het eerste argument van case() is een lijst met een tuple van
      • i) Een booleaan die controleert dat census.columns.sex gelijk is aan 'F'.
      • ii) De kolom census.columns.pop2000.
    • Het tweede argument is de else_-voorwaarde, die je op 0 moet zetten.
  • Bereken de totale bevolking in 2000 en gebruik cast() om deze naar Float te converteren.
  • Bouw een query om het percentage vrouwen in 2000 te berekenen. Deel hiervoor female_pop2000 door total_pop2000 en vermenigvuldig met 100.
  • 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(____)
Code bewerken en uitvoeren