我试图创建一个查询,让我可以获得每月比较费用,收入和储蓄的百分比值。我正在使用MySQL数据库。
表和查询的示例: http://sqlfiddle.com/#!9/78b360/1
到目前为止,我能够从每个表中获得每月的SUM:
SELECT *
FROM(
SELECT sum(amount) AS Total, month(date) AS Month FROM expenses
UNION ALL
SELECT sum(amount), month(date) FROM income
UNION ALL
SELECT sum(amount), month(date) FROM savings
GROUP BY month(date)) as grand_total
结果:
| Total | Month |
|---------|-------|
| 1323232 | 9 |
| 300101 | 9 |
| 20000 | 9 |
| 1 | 10 |
如果我只看第9个月,那么我想要达到的目标就是这样:
| Total | Month | Percent
|---------|-------|--------
| 1323232 | 9 | 81%
| 300101 | 9 | 18%
| 20000 | 9 | 1%
你能帮帮我吗?我在stackoverflow和其他网站上查看过很多答案,但找不到我确切需要的内容。非常感谢您的帮助。谢谢。
答案 0 :(得分:0)
您当前查询的问题是,您不是在expenses
或income
表中按月汇总,而是仅针对savings
表。最终GROUP BY
不适用于所有内容。
我认为你需要做的是首先按月对每个表格进行汇总,将这些结果汇总在一起,然后逐月汇总,以获得每个月的总计。
SELECT
month,
SUM(total) AS month_total
FROM
(
SELECT MONTH(date) AS month, SUM(amount) AS total
FROM expenses
GROUP BY MONTH(date)
UNION ALL
SELECT MONTH(date), SUM(amount)
FROM income
GROUP BY MONTH(date)
UNION ALL
SELECT MONTH(date), SUM(amount)
FROM savings
GROUP BY MONTH(date)
) t
-- WHERE month = 9 -- or whichever months you want to see
GROUP BY
month
ORDER BY
month