OrderA
-------
userId
orderDate
amount
OrderB
------
userId
orderDate
sample data:
OrderA
1 01/01/2018 100
1 02/01/2018 101
1 03/01/2018 102
OrderB
1 01/01/2018
1 01/10/2018
1 03/01/2018
У меня есть две таблицы заказов, OrderA и OrderB. Я хотел бы написать запрос, который суммирует суммы заказов пользователя для заказов OrderA, но включает только записи OrderA, если один и тот же пользователь разместил OrderB в том же месяце.
Для этого примера данных запрос должен дать 202
.
Этот запрос работает, но distinct
работает медленно.
SELECT userId, SUM (a.amount)
FROM (
SELECT DISTINCT a.userId,
a.amount
FROM OrderA a
INNER JOIN OrderB b
ON EXTRACT(month from a.orderDate) = EXTRACT(month from b.orderDate) AND
EXTRACT(year from a.orderDate) = EXTRACT(year from b.orderDate) AND
a.userId = b.userId
)
GROUP BY userId
Этот запрос не работает, он выдает 301
SELECT userId, SUM (a.amount)
FROM OrderA a
INNER JOIN OrderB b
ON EXTRACT(month from a.orderDate) = EXTRACT(month from b.orderDate) AND
EXTRACT(year from a.orderDate) = EXTRACT(year from b.orderDate) AND
a.userId = b.userId
GROUP BY userId
есть предложения? Я чувствую, что есть лучший способ реализовать этот запрос.