date}
Задача получить количество первых депозитов пользователей, сгрупированные по walletType, если они входят в заданный диапазон date
Вытаскиваю все первые депозиты вот так:
SELECT MIN("user_deposit"."date")
FROM "user"
INNER JOIN "user_deposit" ON "user_deposit"."userId" = "user"."id"
GROUP BY "user"."id"
Есть две проблемы:
1) Как добавить проверку на вхождение в диапазон дат? (приходит в голову обернуть этот запрос в subquery и выше уже делать проверку по MIN("user_deposit"."date"))
2) Как добавить группировку по walletType? Двойной GROUP BY "user"."id", "user_deposit"."walletType" делает немного не то, а без него пока что не представляю как в селекте вытащить walletType
Да, делайте subquery. Во внешнем запросе наложите и фильтр по дате и группировку по walletType; а то, что вы процитировали — это будет внутренний запрос
А как мне достать walletType, относящийся к каждому выбранному MIN("user_deposit"."date")? Если просто добавить его в SELECT, то sql ругается на то, что его нет в GROUP BY А если добавить его в GROUP BY, то группировка уже будет не просто по юзерам, но и по каждому walletType каждого юзера
Обсуждают сегодня