用于计算运行总计中每月总计的SQL查询

时间:2013-03-11 18:17:41

标签: mysql

我在MySQL中有一个名为“Reports”的表,其中有一个标题为“Flow_Total”的列,其运行总值每天都在上升而且从不重置,我需要的是一个查询,它采用存储的值“Flow_Total”列,按月划分,告诉我每个月价值上涨多少。

这就是我想看到数据的方式:

https://skydrive.live.com/redir?resid=BC22A6E2F92CE833!11843&authkey=!ACgipFLKDJTBlN8

月份的值写在该月的最后一天。 我想要做的总结是从Flow_Total中减去每月更改,并将其显示在标题为“每月总计”的单独列中。

1 个答案:

答案 0 :(得分:1)

可能不是最令人愉悦的SQL,但这应该是你所要求的;它只是自己加入桌子,自己延迟了1个月,并计算出与之相比的差异。

SELECT DATE_FORMAT(MAX(a.`DATE`), '%b-%y') `DATE`,
       MAX(a.`FLOW_TOTAL`) `Flow Total`,
       (MAX(a.`FLOW_TOTAL`) - MAX(b.`FLOW_TOTAL`)) `Monthly Total`
FROM Reports a
LEFT JOIN Reports b
  ON YEAR(a.`DATE`)  =  YEAR(DATE_ADD(b.`DATE`, INTERVAL 1 MONTH)) AND
     MONTH(a.`DATE`) = MONTH(DATE_ADD(b.`DATE`, INTERVAL 1 MONTH))
GROUP BY YEAR(a.`DATE`), MONTH(a.`DATE`)
ORDER BY a.`DATE` DESC;

An SQLfiddle for testing