gpt4 book ai didi

MySQL 按州按年份汇总总数

转载 作者:行者123 更新时间:2023-11-29 21:59:56 26 4
gpt4 key购买 nike

我已经玩了好几个小时了,但无法得到我想要的结果。这是我遇到问题的查询:

    SELECT year.year, dstate,
(SELECT sum(amount) FROM gift
WHERE year.year = gift.year
AND gift.donorno = donor.donorno)
FROM donor, gift, year
WHERE year.year = gift.year
AND gift.donorno = donor.donorno;

这似乎是多余的。不管怎样,我正在尝试按年份显示每个州的总捐款(gift.amount)。

ex.
1999 GA 500 (donorno 1 from GA donated 200 and donorno 2 from GA donated 300)
1999 FL 400
2000 GA 600
2000 FL 500
...

为了澄清捐赠者可以来自同一州,但我正在尝试计算捐赠当年该州的捐赠金额。任何建议表示赞赏。我感觉答案就在我眼前。

以下是表格图片供引用: table diagram

最佳答案

这是一个非常简单的连接和聚合问题。

SELECT y.year, d.state, SUM(g.amount) AS total
FROM gift AS g
INNER JOIN year AS y ON y.year=g.year
INNER JOIN donor AS d ON d.donorno=g.donorno
GROUP BY y.year, d.state

您不需要在 SELECT 子句中使用子查询来获取总金额。可以通过分组来求和。 (我认为 GROUP BY 子句是您所缺少的。我建议您阅读它。)您所做的称为相关子查询,它会非常慢大型数据集,因为它必须逐行计算,而不是作为集合运算。

此外,请不要使用旧式逗号连接语法。相反,请使用如上所示的显式连接语法。它更加清晰,有助于避免意外的笛卡尔积。

关于MySQL 按州按年份汇总总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752697/

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