Как я могу получить пользователей, которые превышают 1000 долларов за последние 30 дней?для каждого пользователя последние 30 дней.SQL, имеющий предел - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть таблицы продуктов в БД.Продукты: id, user_id, product_price.Как я могу получить пользователей, которые превышают 1000 долларов за последние 30 дней?( для каждого пользователя за последние 30 дней ) Мой скрипт мне не помог:

SELECT   t.user_id,
        ,SUM(t.product_price) 
FROM ( SELECT p.user_id
            , p.product_price 
        FROM products p 
        ORDER BY p.id DESC LIMIT 30 
     ) t 
GROUP BY t.user_id 
HAVING SUM(t.product_price) >= 1000

1 Ответ

0 голосов
/ 02 декабря 2018

Вам не нужен подзапрос, вам нужен 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...