Вы захотите посмотреть в вашей конкретной базе данных синтаксис datetime, но в MySQL:
SELECT SUM(revenue) as month_revenue
FROM b
WHERE orderdate > (CURDATE() - INTERVAL 30 DAYS)
[Изменить]
Это было только для одного пользователя, используя таблицу b. Чтобы выполнить полный запрос по обеим таблицам, мы будем немного более экзотичными.
SELECT a.id as userid, SUM(b.revenue) as revenue
FROM a
INNER JOIN b on a.id = b.userid
WHERE orderdate > (CURDATE() - INTERVAL 30 DAYS)
GROUP BY a.id
Мы выполняем объединение двух таблиц, поэтому мы получаем виртуальную таблицу со структурой (id, createdate, userid, revenue, orderdate)
и одну запись для каждой записи в b . ГДЕ говорит само за себя, за исключением того, чтобы указать, что это там. GROUP BY разделяет их на отдельные идентификаторы пользователей, и сумма работает для этих групп.