mysql查询,以获取过去12个月的销售额,其中月份和年份是不同的字段

58wvjzkj  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(638)

我想用图表显示过去12个月的销售额。sql表有“年”和“月”字段,没有组合的日期字段。我不能给出12个月的时间间隔条件。

SELECT s_month,s_year,SUM(s_amount) FROM table 
WHERE s_month >= Date_add(now(),interval - 12 month) 
AND s_year >= Date_add(now(),interval - 12 month)
GROUP BY s_year,s_month
ilmyapht

ilmyapht1#

一种方法是:

select s_year, s_Month, sum(s_amount)
from t
where date(concat_ws('-', s_year, s.month, 1)) >= curdate() - interval 12 month
group by s_year, s_month;

您可能需要调整日期算法,这取决于您是否想要12个月前的日期。
如果您想在数据中显示最后12个月,可以执行以下操作:

select s_year, s_month, sum(amount)
from t
group by s_year, s_month
order by s_year desc, s_month desc
limit 12;
e0bqpujr

e0bqpujr2#

这是反对将日期部分(月、年)存储在单独的列中的有力论据。
这个 WHERE 你的条款没有达到你的期望!
事实上,拥有一个 DATE 列(或 TIMESTAMP 或者 DATETIME )并根据需要使用日期函数将其拆分。

SELECT  MONTH(dat), YEAR(dat), SUM(amount)
    FROM  table
    WHERE  dat >= CURDATE() - INTERVAL 12 MONTH
    GROUP BY  LEFT(dat, 7) -- eg, "2017-12"

您的查询还有一个问题。 SUM(amount) 两头都有一个月的时间。如果不更好地理解数据的来源和时间,我无法为您解决这个问题。如果它已经是一个月的第一个存储的单一读数,那么没有问题。如果是每日或每小时的金额,那么我的观点是正确的。

相关问题