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
Övningsinstruktioner
- Importera
case,castochFloatfrånsqlalchemy. - Bygg ett uttryck
female_pop2000för att beräkna kvinnlig befolkning år 2000. Gör så här:- Använd
case()inutifunc.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.
- i) En boolesk kontroll av att
- Det andra argumentet är
else_-villkoret, som ska sättas till 0.
- Använd
- Beräkna den totala befolkningen år 2000 och använd
cast()för att konvertera den tillFloat. - Bygg en fråga för att beräkna andelen kvinnor år 2000. Dividera
female_pop2000medtotal_pop2000och multiplicera med100. - 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(____)