Kom igångKom igång gratis

Beräkna den totala andelen kvinnor

Det går att kombinera funktioner och operatorer i ett och samma select-uttryck. Detta är särskilt användbart när du vill beräkna procentandelar eller medelvärden. Du kan också använda case()-uttrycket för att arbeta med data som uppfyller specifika villkor utan att påverka resten av frågan. case()-uttrycket tar emot en lista med villkor att matcha och den kolumn som ska returneras om villkoret uppfylls, följt av ett else_-värde om inget villkor matchar. Hela uttrycket kan sedan omges av valfri funktion eller matematisk operation.

Vid heltalsdivision vill man ofta få tillbaka ett flyttal. Vissa databaser hanterar detta automatiskt, men du kan också använda cast()-funktionen för att konvertera ett uttryck till en specifik typ.

Den här övningen är en del av kursen

Introduktion till databaser i Python

Visa kurs

Övningsinstruktioner

  • Importera case, cast och Float från sqlalchemy.
  • Bygg ett uttryck female_pop2000 för att beräkna kvinnlig befolkning år 2000. Gör så här:
    • Använd case() inuti func.sum().
    • Det första argumentet till case() är en lista med en tupel som innehåller:
      • i) En boolesk kontroll av att census.columns.sex är lika med 'F'.
      • ii) Kolumnen census.columns.pop2000.
    • Det andra argumentet är else_-villkoret, som ska sättas till 0.
  • Beräkna den totala befolkningen år 2000 och använd cast() för att konvertera den till Float.
  • Bygg en fråga för att beräkna andelen kvinnor år 2000. Dividera female_pop2000 med total_pop2000 och multiplicera med 100.
  • Kör frågan och skriv ut percent_female.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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(____)
Redigera och kör kod