CommencerCommencer gratuitement

Calculer la différence entre deux colonnes

Il est fréquent d’avoir à effectuer des opérations mathématiques dans une requête, par exemple pour calculer l’évolution de la population entre 2000 et 2008. Pour les opérations sur des nombres, les opérateurs de SQLAlchemy fonctionnent comme en Python.

Vous pouvez utiliser ces opérateurs pour effectuer des additions (+), soustractions (-), multiplications (*), divisions (/) et modulo (%). Remarque : leur comportement diffère lorsqu’ils sont appliqués à des colonnes non numériques.

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

Cet exercice fait partie du cours

Introduction aux bases de données en Python

Afficher le cours

Instructions

  • Définissez une instruction select appelée stmt pour renvoyer :
    • i) La colonne de l’État de la table census (census.columns.state).
    • ii) La différence de population entre 2008 (census.columns.pop2008) et 2000 (census.columns.pop2000) avec l’alias 'pop_change'.
  • Regroupez l’instruction par census.columns.state.
  • Triez l’instruction par variation de population ('pop_change') en ordre décroissant, en passant desc('pop_change').
  • Utilisez la méthode .limit() sur l’instruction précédente pour ne renvoyer que 5 enregistrements.
  • Exécutez l’instruction et récupérez les enregistrements avec fetchall().
  • L’instruction d’affichage a déjà été écrite pour vous. Soumettre la réponse pour voir les résultats !

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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