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
Instructions de l’exercice
- Définissez une requête select nommée
stmtpour 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'.
- i) La colonne de l'État dans la table
- Regroupez l'énoncé par
census.columns.state. - Triez l'énoncé par variation de population (
'pop_change') en ordre décroissant, en passantdesc('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))