Я занимаюсь разработкой веб-приложения с использованием веб-платформы Pyramid. Я использую sqlalchemy для ORM и моделей. Я использую postgres для БД.
Вот мой запрос, чтобы получить различное количество заявок, поданных всеми пользователями:
counts = dbsession.query(
func.count(Application.id).filter(Application.state == state1),
func.count(Application.id).filter(Application.state == state2),
func.count(Application.id).filter(Application.state == state3)).first()
Я сомневаюсь, будет ли это сканировать БД несколько раз, что нежелательно.
Вот сгенерированный sql:
SELECT count(applications.id)
FILTER (WHERE applications.state = %(state_1)s) AS anon_1, count(applications.id)
FILTER (WHERE applications.state = %(state_2)s) AS anon_2, count(applications.id)
FILTER (WHERE applications.state = %(state_3)s) AS anon_3
FROM applications
LIMIT %(param_1)s
Заранее спасибо.