LoslegenKostenlos loslegen

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

Kurs anzeigen

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'.
  • Gruppiere das Statement nach census.columns.state.
  • Sortiere das Statement nach der Bevölkerungsänderung ('pop_change') in absteigender Reihenfolge. Übergib dafür desc('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))
Code bearbeiten und ausführen