Déterminer la somme de la population par État
Pour éviter toute confusion avec des noms de colonnes de résultat de requête comme count_1, on peut utiliser la méthode .label() pour nommer la colonne résultante. Ce nom est ajouté à la méthode de fonction que nous utilisons, et son argument est le nom que nous voulons donner.
Nous pouvons associer func.sum() à .group_by() pour obtenir la somme de la population par State et utiliser la méthode label() pour nommer le résultat.
Nous pouvons aussi créer l'expression func.sum() avant de l'employer dans l'instruction select. On procède de la même façon que si on l'écrivait directement dans l'instruction select, puis on l'enregistre dans une variable. Ensuite, on utilise cette variable dans l'instruction select à l'endroit où func.sum() se trouverait normalement.
Cette activité fait partie du cours
Introduction aux bases de données en Python
Instructions de l’exercice
- Importez
funcdepuissqlalchemy. - Construisez une expression pour calculer la somme des valeurs du champ
pop2008étiquetée'population'. - Construisez une instruction select pour obtenir la valeur du champ
stateet la somme des valeurs depop2008. - Regroupez l'instruction par
stateà l'aide de la méthode.group_by(). - Exécutez
stmtà l'aide deconnectionpour obtenir le total et enregistrez les résultats dansresults. - Affichez les clés/noms de colonnes des résultats retournés avec
results[0].keys().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Import func
____
# Build an expression to calculate the sum of pop2008 labeled as population
pop2008_sum = func.sum(____).label(____)
# Build a query to select the state and sum of pop2008: stmt
stmt = select([____, ____])
# Group stmt by state
stmt = stmt.group_by(____)
# Execute the statement and store all the records: results
results = connection.execute(____).fetchall()
# Print results
print(results)
# Print the keys/column names of the results returned
print(____)