ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Definește o instrucțiune select numită stmt care 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'.
  • Grupează instrucțiunea după census.columns.state.
  • Ordonează instrucțiunea după variația populației ('pop_change') în ordine descrescătoare, transmițând desc('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))
Editează și rulează codul