Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Definiera en select-sats som heter stmt och 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'.
  • Gruppera satsen efter census.columns.state.
  • Sortera satsen efter befolkningsförändring ('pop_change') i fallande ordning. Gör det genom att skicka desc('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))
Redigera och kör kod