Beräkna skillnaden mellan två kolumner
Ofta behöver du utföra matematiska operationer som en del av en fråga – till exempel om du vill beräkna befolkningsförändringen från 2000 till 2008. För matematiska operationer på tal fungerar operatorerna i SQLAlchemy på samma sätt som i Python.
Du kan använda dessa operatorer för addition (+), subtraktion (-), multiplikation (*), division (/) och modulus (%). Observera att de beter sig annorlunda när de används med icke-numeriska kolumntyper.
Låt oss nu hitta de 5 delstater som hade störst befolkningstillväxt mellan 2000 och 2008.
Den här övningen är en del av kursen
Introduktion till databaser i Python
Övningsinstruktioner
- Definiera en select-sats som heter
stmtoch returnerar:- i) Delstatskolumnen i tabellen
census(census.columns.state). - ii) Skillnaden i befolkningsantal mellan 2008 (
census.columns.pop2008) och 2000 (census.columns.pop2000), märkt som'pop_change'.
- i) Delstatskolumnen i tabellen
- Gruppera satsen efter
census.columns.state. - Sortera satsen efter befolkningsförändring (
'pop_change') i fallande ordning. Gör det genom att skickadesc('pop_change'). - Använd metoden
.limit()på den föregående satsen för att returnera endast 5 poster. - Kör satsen och hämta posterna med
fetchall(). - Print-satsen är redan skriven åt dig. Skicka in svaret för att se resultaten!
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Build query to return state names by population difference from 2008 to 2000: stmt
stmt = select([____, (____-____).label(____)])
# Append group by for the state: stmt_grouped
stmt_grouped = stmt.group_by(____)
# Append order by for pop_change descendingly: stmt_ordered
stmt_ordered = stmt_grouped.order_by(____)
# Return only 5 results: stmt_top5
stmt_top5 = ____
# Use connection to execute stmt_top5 and fetch all results
results = connection.execute(____).fetchall()
# Print the state and population change for each record
for result in results:
print('{}:{}'.format(result.state, result.pop_change))