Вычисление общей доли женщин в процентах
В одном операторе select можно сочетать функции и математические операции.
Это особенно удобно, когда нужно вычислить проценты или средние значения. Кроме того, выражение case() позволяет обрабатывать только те данные, которые соответствуют заданным условиям, не затрагивая остальную часть запроса.
Выражение case() принимает список условий для проверки и столбец, который возвращается при выполнении условия, а также значение else_ — на случай, если ни одно из условий не выполнено. Всё это выражение можно обернуть в любую функцию или математическую операцию.
При целочисленном делении часто требуется получить результат в виде числа с плавающей точкой. Хотя некоторые базы данных делают это автоматически, вы можете использовать функцию cast(), чтобы явно преобразовать выражение к нужному типу.
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- Импортируйте
case,castиFloatизsqlalchemy. - Создайте выражение
female_pop2000для вычисления численности женского населения в 2000 году. Для этого:- Используйте
case()внутриfunc.sum(). - Первый аргумент
case()— список, содержащий кортеж из:- i) булева условия, проверяющего, что
census.columns.sexравно'F'; - ii) столбца
census.columns.pop2000.
- i) булева условия, проверяющего, что
- Второй аргумент — условие
else_, которое следует задать равным 0.
- Используйте
- Вычислите общую численность населения в 2000 году и используйте
cast(), чтобы преобразовать результат к типуFloat. - Постройте запрос для вычисления доли женщин в 2000 году: разделите
female_pop2000наtotal_pop2000и умножьте на100. - Выполните запрос и выведите значение
percent_female.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# import case, cast and Float from sqlalchemy
from sqlalchemy import ____, ____, ____
# Build an expression to calculate female population in 2000
female_pop2000 = func.sum(
____([
(____ == ____, ____)
], else_=____))
# Cast an expression to calculate total population in 2000 to Float
total_pop2000 = cast(func.sum(____), ____)
# Build a query to calculate the percentage of women in 2000: stmt
stmt = select([____ / ____* 100])
# Execute the query and store the scalar result: percent_female
percent_female = connection.execute(____).scalar()
# Print the percentage
print(____)