mysql - 获取前 3 个月记录的总和

标签 mysql

我需要得到前 3 个月的分数总和。也就是说,如果我查看 4 月,我将得到 1 月、2 月、3 月的总和。同样,当我查看 1 月时,它显示前一年 10 月、11 月、12 月的总和。我使用以下查询

SELECT empid,
       name,
       sum(total) AS total
FROM formresult
WHERE (MONTH(date) = MONTH(now())
       OR MONTH(date) = MONTH(now()- INTERVAL 1 MONTH)
       OR MONTH(date) = MONTH(now()- INTERVAL 2 MONTH))
  AND YEAR(date) = YEAR(now())
GROUP BY empid

但是当使用此代码时,我得到了 3 个月的结果,但是当我查看 1 月时,它不显示上一年的结果。怎么可能。请帮助我

最佳答案

像下面这样的东西应该可以满足您的需要。

SELECT empid, name, SUM(total) AS total
FROM formresult
WHERE date BETWEEN
  DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01') AND
  LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
GROUP BY empid

参见 DATE_FORMAT() , DATE_SUB() , 和 LAST_DAY()获取更多信息。

关于mysql - 获取前 3 个月记录的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49703985/

相关文章:

php - CKeditor 的 WIRIS 插件在本地工作但不在线

Java错误: Input automatically go to next line without input yet

php - 使用 Codeigniter 加入查询

MySQL/MariaDB 在 PRIMARY KEY 上更新缓慢

sql - 这个SQL怎么会错呢?我没看到什么?

mysql - Eloquent - 不同的多列,但不精确

mysql - 首先将两列相加后减去两列

mysql - 以什么顺序处理 ON DELETE CASCADE 约束?

mysql - Excel VBA 连接到 MySQL - 体系结构不匹配错误

MySQL:如何找出在级联删除中删除了哪些记录