У меня есть запрос, который я пытаюсь решить, и в нем всего одна проблема, которую мне трудно решить.
Запрос sqlalchemy (python) выглядит следующим образом:
def get_count(apple_ids: List[int]):
q = (
db.session()
.query(
func.sum(case([(Apple.is_green, 1)], else_=0)).label("green_count"),
func.sum(case([(Apple.is_grouped, 5)], else_=1)).label("group_count"),
)
.filter(Apple.id.in_(apple_ids))
)
return q.one()
Проблема возникает, если в моем списке apple_ids есть дубликаты, то есть [10, 10]. В этом случае сумма выполняется только один раз для Apple с идентификатором 10. Но мне нужно, чтобы суммировать дважды, так как она находится в списке дважды.
Результат запроса на этом этапе (если Apple.is_green и Apple.is_grouped имеет значение True): green_count = 1, group_count = 5. Однако мне нужно, чтобы это было green_count = 2, group_count = 10.
Любая помощь приветствуется. Спасибо!