gpt4 book ai didi

MySQL 将总金额与支出、收入、储蓄(3 个不同的表格)中的所有金额进行比较,以每月的百分比表示

转载 作者:行者123 更新时间:2023-11-30 21:52:25 26 4
gpt4 key购买 nike

我正在尝试创建一个查询,该查询允许我获得每个月比较支出、收入和储蓄的百分比值。我正在使用 MySQL 数据库。

表和查询示例: http://sqlfiddle.com/#!9/78b360/1

到目前为止,我能够从每个表中获取每月的总和:

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 和其他网站上查看了很多答案,但找不到我真正需要的东西。非常感谢您的帮助。谢谢。

最佳答案

您当前查询的问题是您没有在 expensesincome 表中按月汇总,仅针对 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

关于MySQL 将总金额与支出、收入、储蓄(3 个不同的表格)中的所有金额进行比较,以每月的百分比表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46660021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com