НачатьНачать бесплатно

Вычисление общей доли женщин в процентах

В одном операторе 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.
    • Второй аргумент — условие 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(____)
Редактировать и запускать код