AstralProjection
@AstralProjection

Как правильно сделать выборку пользователей за период с даты регистрации?

5ddc51c45e4b4058317809.jpeg
Задача Вывести список всех пользователей, у которых за год с момента их регистрации (Users.RegistrationDate) было совершено более 30 транзакций в валюте USD (WalletSections.Currency = 1).
Как правильно сделать выборку за период по времени с Users.RegistrationDate по (Users.RegistrationDate + 1 год)?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
SELECT Users.UserID
  FROM Users 
    INNER JOIN Wallets ON Users.UserID = Wallets.UserID 
    INNER JOIN WalletSections ON Wallets.WalletID = WalletSections.WalletID 
    INNER JOIN Transactions ON WalletSections.WalletSectionID = Transactions.WalletSectionID
  WHERE (WalletSections.Currency = 1) 
    AND (Transactions.CreationDate BETWEEN Users.RegistrationDate AND DATEADD(yy, 1, Users.RegistrationDate))
  GROUP BY Users.UserID
  HAVING (COUNT(*) > 30)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Allezhik
Oracle:
Select
U.userid, Count (t.transactionid)
From users u, wallets w, walletsections ws, transactions t
Where
u.userid=w.userid and
w.walletid=ws.walletid and
ws.walletsectionid=t.walletsectionid and
to_date(t.creationdate,'dd.mm.yyyy') between to_date(u.registrationdate,'dd.mm.yyyy') and add_month(to_date(u.registrationdate,'dd.mm.yyyy'),12)-1 and
ws.currency='USD' /*тут смотрите сами как у вас валюта кодируется*/
group by u.userid
having count(t.transactionid)>30
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы