Calcularea diferenței dintre două coloane
De multe ori vei avea nevoie să efectuezi operații matematice ca parte a unei interogări – de exemplu, pentru a calcula variația populației între 2000 și 2008. Pentru operații matematice pe valori numerice, operatorii din SQLAlchemy funcționează la fel ca în Python.
Poți folosi acești operatori pentru adunare (+), scădere (-), înmulțire (*), împărțire (/) și modulo (%). Notă: comportamentul lor diferă atunci când sunt folosiți cu tipuri de coloane nenumerice.
Acum să găsim primele 5 state după creșterea populației între 2000 și 2008.
Acest exercițiu face parte din cursul
Introducere în baze de date în Python
Instrucțiuni pentru exercițiu
- Definește o instrucțiune select numită
stmtcare să returneze:- i) Coloana state din tabela
census(census.columns.state). - ii) Diferența dintre numărul de locuitori din 2008 (
census.columns.pop2008) și cel din 2000 (census.columns.pop2000), etichetată ca'pop_change'.
- i) Coloana state din tabela
- Grupează instrucțiunea după
census.columns.state. - Ordonează instrucțiunea după variația populației (
'pop_change') în ordine descrescătoare, transmițânddesc('pop_change'). - Folosește metoda
.limit()pe instrucțiunea anterioară pentru a returna doar 5 înregistrări. - Execută instrucțiunea și preia înregistrările cu
fetchall(). - Instrucțiunea print a fost deja scrisă pentru tine. Trimite răspunsul pentru a vedea rezultatele!
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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))