CommencezCommencez gratuitement

Calcul d'une différence entre deux colonnes

Souvent, vous devrez effectuer des opérations mathématiques dans une requête, par exemple pour calculer l'évolution de la population de 2000 à 2008. Pour les opérations sur des nombres, les opérateurs dans SQLAlchemy fonctionnent comme en Python.

Vous pouvez utiliser ces opérateurs pour l'addition (+), la soustraction (-), la multiplication (*), la division (/) et le modulo (%). Remarque : leur comportement diffère lorsqu'ils sont utilisés avec des types de colonnes non numériques.

Trouvez maintenant les 5 États ayant connu la plus forte croissance démographique entre 2000 et 2008.

Cette activité fait partie du cours

Introduction aux bases de données en Python

Voir le cours

Instructions de l’exercice

  • Définissez une requête select nommée stmt pour retourner :
    • i) La colonne de l'État dans la table census (census.columns.state).
    • ii) La différence du nombre d'habitants entre 2008 (census.columns.pop2008) et 2000 (census.columns.pop2000) identifiée par 'pop_change'.
  • Regroupez l'énoncé par census.columns.state.
  • Triez l'énoncé par variation de population ('pop_change') en ordre décroissant, en passant desc('pop_change').
  • Utilisez la méthode .limit() sur l'énoncé précédent pour ne retourner que 5 enregistrements.
  • Exécutez l'énoncé et appliquez fetchall() pour récupérer les enregistrements.
  • L'instruction d'impression est déjà écrite pour vous. Soumettez la réponse pour voir les résultats !

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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))
Modifier et exécuter le code