У меня есть таблица базы данных 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'));
Есть ли способ, которым эти два утверждения можно упростить и объединить в одно,без необходимости создавать временную таблицу?Цель состоит в том, чтобы иметь возможность фильтровать результаты, используя комбинации начального месяца / года и конечного месяца / года, и получать сумму входных данных из результата.
Примечание. Я решил просто добавить сгенерированный столбецкоторый объединяет столбцы месяца и года.