Eine Differenz zwischen zwei Spalten berechnen
Oft musst du in einer Abfrage Rechenoperationen durchführen, zum Beispiel wenn du die Veränderung der Bevölkerung von 2000 bis 2008 berechnen willst. Für mathematische Operationen mit Zahlen funktionieren die Operatoren in SQLAlchemy genauso wie in Python.
Du kannst diese Operatoren für Addition (+), Subtraktion (-), Multiplikation (*), Division (/) und Modulo (%) verwenden. Hinweis: Bei nicht-numerischen Spaltentypen verhalten sie sich anders.
Finden wir jetzt die Top 5 Bundesstaaten nach Bevölkerungswachstum zwischen 2000 und 2008.
Diese Übung ist Teil des Kurses
Einführung in Datenbanken mit Python
Anleitung zur Übung
- Definiere ein Select-Statement namens
stmt, das Folgendes zurückgibt:- i) Die Spalte mit dem Bundesstaat aus der Tabelle
census(census.columns.state). - ii) Die Differenz der Bevölkerungszahl zwischen 2008 (
census.columns.pop2008) und 2000 (census.columns.pop2000), beschriftet als'pop_change'.
- i) Die Spalte mit dem Bundesstaat aus der Tabelle
- Gruppiere das Statement nach
census.columns.state. - Sortiere das Statement nach der Bevölkerungsänderung (
'pop_change') in absteigender Reihenfolge. Übergib dafürdesc('pop_change'). - Verwende die Methode
.limit()auf dem vorherigen Statement, um nur 5 Datensätze zurückzugeben. - Führe das Statement aus und rufe die Datensätze mit
fetchall()ab. - Die Print-Anweisung ist bereits für dich geschrieben. Antwort senden, um die Ergebnisse zu sehen!
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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))