Подсчёт уникальных значений
Как было показано в видео, модуль func из SQLAlchemy открывает доступ к встроенным
функциям SQL, которые позволяют выполнять такие операции, как подсчёт и суммирование, быстро и эффективно.
В видео Джейсон использовал func.sum(), чтобы получить сумму значений столбца pop2008 таблицы census:
select([func.sum(census.columns.pop2008)])
Если вместо этого нужно подсчитать количество значений в pop2008, можно воспользоваться функцией func.count():
select([func.count(census.columns.pop2008)])
Если же требуется подсчитать только уникальные значения pop2008, применяйте метод .distinct():
select([func.count(census.columns.pop2008.distinct())])
В этом упражнении вы попрактикуетесь в использовании func.count() и .distinct(), чтобы определить количество уникальных штатов в таблице census.
Ранее вы уже видели методы .fetchall(), .fetchmany() и .first(), которые применяются к объекту ResultProxy для получения результатов. У ResultProxy также есть метод .scalar() — он возвращает единственное значение из запроса, который выдаёт ровно одну строку и один столбец.
Это особенно удобно, когда запрос возвращает просто счётчик или сумму.
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- Постройте оператор
selectдля подсчёта уникальных значений в полеstateтаблицыcensus. - Выполните
stmt, чтобы получить результат, и сохраните его в переменнойdistinct_state_count. - Выведите значение
distinct_state_countна экран.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Build a query to count the distinct states values: stmt
stmt = select([____])
# Execute the query and store the scalar result: distinct_state_count
distinct_state_count = connection.execute(____).scalar()
# Print the distinct_state_count
print(____)