Výpočet rozdílu mezi dvěma sloupci
Součástí dotazů jsou často matematické operace – například výpočet změny počtu obyvatel v letech 2000 až 2008. Pro numerické hodnoty fungují operátory v SQLAlchemy stejně jako v Pythonu.
Můžeš využít sčítání (+), odčítání (-), násobení (*), dělení (/) a modulo (%). Pozor: u nečíselných typů sloupců se mohou chovat jinak.
Teď najdeme 5 států s největším růstem počtu obyvatel mezi lety 2000 a 2008.
Toto cvičení je součástí kurzu
Introduction to Databases in Python
Pokyny k cvičení
- Definuj select dotaz
stmt, který vrátí:- i) Sloupec se státem z tabulky
census(census.columns.state). - ii) Rozdíl v počtu obyvatel mezi rokem 2008 (
census.columns.pop2008) a rokem 2000 (census.columns.pop2000) s označením'pop_change'.
- i) Sloupec se státem z tabulky
- Seskup dotaz podle
census.columns.state. - Seřaď výsledky podle změny počtu obyvatel (
'pop_change') sestupně – předej funkcidesc('pop_change'). - Pomocí metody
.limit()na předchozím dotazu omez výsledky na 5 záznamů. - Proveď dotaz a načti záznamy pomocí
fetchall(). - Kód pro výpis výsledků je už připravený. Odešli odpověď a podívej se na výsledky!
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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))