Обчислення різниці між двома стовпцями
Часто у запиті потрібно виконувати математичні операції, наприклад, щоб обчислити зміну чисельності населення з 2000 до 2008 року. Для числових операцій оператори в SQLAlchemy працюють так само, як у Python.
Ви можете використовувати ці оператори для додавання (+), віднімання (-), множення (*), ділення (/) і остачі від ділення (%). Примітка: для нечислових типів стовпців вони поводяться інакше.
Тепер знайдімо 5 штатів із найбільшим приростом населення між 2000 і 2008 роками.
Ця вправа є частиною курсу
Вступ до баз даних у Python
Інструкції до вправи
- Створіть оператор вибірки
stmt, який повертатиме:- i) Стовпець штату з таблиці
census(census.columns.state). - ii) Різницю між чисельністю населення 2008 року (
census.columns.pop2008) і 2000 року (census.columns.pop2000), позначену як'pop_change'.
- i) Стовпець штату з таблиці
- Згрупуйте вираз за
census.columns.state. - Відсортуйте вираз за зміною населення (
'pop_change') у порядку спадання. Зробіть це, передавшиdesc('pop_change'). - Використайте метод
.limit()для попереднього виразу, щоб повернути лише 5 записів. - Виконайте вираз і застосуйте
fetchall()до отриманих рядків. - Оператор друку вже підготовлено. Натисніть «Надіслати відповідь», щоб переглянути результати!
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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))