获取按月份和年份过滤的列的运行总计

时间:2019-01-17 16:13:08

标签: mysql joomla

我有一个名为user_inputs的MySQL数据库表,其中包含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'));

有没有一种方法可以简化这两个语句并将其合并为一个,而不必创建临时表?目的是能够使用开始的月份/年份和结束的月份/年份组合过滤结果,并从结果中获取输入总和。

注意:我决定只添加一个合并了月和年列的生成列。

0 个答案:

没有答案