Визначення загального відсотка жінок
Також можна поєднувати функції та оператори в одному виразі 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(____)