Получите промежуточную сумму столбца, отфильтрованного по месяцу и году - PullRequest
0 голосов
/ 17 января 2019

У меня есть таблица базы данных MySQL с именем user_inputs со столбцами userId (str), year (int), month (int) и input (int).

Мне нужно получить последние 12 месяцев записи впользователя, и получите сумму входного столбца.

До сих пор я придумал следующее:

CREATE TEMPORARY TABLE temp 
AS (SELECT *, CAST(CONCAT(`year`, '-', `month`, '-01' ) AS DATE) AS `NewDate` FROM `user_inputs`);

SELECT `userId`, SUM(`input`) AS `running_total` FROM temp 
WHERE `userId` = 266 
AND  `NewDate` BETWEEN STR_TO_DATE(CONCAT('2018', '01', '01'), '%Y%m%d') 
AND LAST_DAY(STR_TO_DATE(CONCAT('2018', '12', '01'), '%Y%m%d'));

Есть ли способ, которым эти два утверждения можно упростить и объединить в одно,без необходимости создавать временную таблицу?Цель состоит в том, чтобы иметь возможность фильтровать результаты, используя комбинации начального месяца / года и конечного месяца / года, и получать сумму входных данных из результата.

Примечание. Я решил просто добавить сгенерированный столбецкоторый объединяет столбцы месяца и года.

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