gpt4 book ai didi

mysql - 在 MYSQL 中添加子总和

转载 作者:行者123 更新时间:2023-11-29 06:54:45 25 4
gpt4 key购买 nike

我正在处理一个 mySQL 查询,希望能将每个表的小计相加。

我有一张成员(member) table 。这有他们的名字、一个唯一的 ID 和其他几个不相关的项目。另一张表是为了跟踪他们记录的社区服务。每个成员可以在其中多次。这些字段是 uniqueID(成员的外键)、auto_increment(因为它是主要的)、期限、小时数和位置。

我希望此查询执行的操作是添加每个成员在给定期限内的小时总和。我所拥有的在下面,但不幸的是它只给了我第一个成员,以及每个成员的总数。有什么想法吗?

SELECT fName, lName, SUM(hours)
FROM members M, communityService S
WHERE S.term = 'f2012' && M.onid = S.member

最佳答案

您只是缺少一个 GROUP BY 子句来聚合每个 fName,lName 的总和:

SELECT fName, lName, SUM(hours)
FROM members M, communityService S
WHERE S.term = 'f2012' && M.onid = S.member
GROUP BY lName, fName

除 MySQL 外,大多数 RDBMS 都会报告查询的语法错误,但 MySQL 有一个独特的默认行为,即非确定性地选择一个匹配的行来填充聚合中未确定的其余列出现在 GROUP BY 子句中。这就是您获得第一行的 lName, fName 的原因。

评论 the documentation on aggregate functions and the GROUP BY clause .

建议使用显式 INNER JOIN 而不是隐式(逗号分隔的 FROM)。

SELECT
fName,
lName,
SUM(hours) AS total_hours
FROM
members M,
INNER JOIN communityService S M.onid = S.member
WHERE
S.term = 'f2012'
GROUP BY lName, fName

关于mysql - 在 MYSQL 中添加子总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13446794/

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