Вам не нужен подзапрос, вам нужен WHERE
.«Последние 30 дней» подразумевают период времени до сегодняшнего дня.Для этого используйте curdate()
(или аналогичную конструкцию):
SELECT p.user_id, SUM(p.product_price)
FROM products p
WHERE p.<date column> >= curdate() - interval 30 day
GROUP BY p.user_id
HAVING SUM(p.product_price) >= 1000;
Предположительно, у вас нет будущих дат в данных, поэтому вам не нужно проверять, что дата находится вПрошлое.
Названия таблиц в вашей базе данных довольно подозрительны.Я не понимаю, почему user_id
будет в таблице с именем products
.