Вычисление суммы населения по штатам
Чтобы избежать путаницы с такими именами столбцов в результатах запроса, как count_1, можно использовать метод .label() — он задаёт понятное название результирующему столбцу. Метод добавляется к вызываемой функции, а его аргументом служит желаемое имя.
Сочетание func.sum() и .group_by() позволяет получить сумму населения по полю State, а метод label() даёт возможность назвать результирующий столбец.
Выражение func.sum() можно также создать заранее, до его использования в операторе SELECT. Синтаксис тот же, что и внутри оператора SELECT, — просто сохраните выражение в переменную, а затем используйте её там, где обычно указывается func.sum().
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- Импортируйте
funcизsqlalchemy. - Создайте выражение для вычисления суммы значений в поле
pop2008с меткой'population'. - Создайте оператор SELECT, который возвращает значение поля
stateи сумму значений поляpop2008. - Сгруппируйте оператор по полю
stateс помощью метода.group_by(). - Выполните
stmtчерезconnection, чтобы получить результат, и сохраните его в переменнуюresults. - Выведите имена ключей/столбцов возвращённых результатов с помощью
results[0].keys().
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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(____)