我有 3 个表:事件、任务和要求。我想返回特定要求的所有任务的所有持续时间。这是我的查询:
SELECT r.id as req_id,
r.project_id,
r.name as req_name,
r.cost,r.estimated,
p.name as project_name,
v.name AS `status` ,
t.taskid,
(SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(duration)))
FROM activities a
WHERE a.taskid = t.taskid) AS worked
FROM requirements r
INNER JOIN projects p
ON p.projectid = r.project_id
INNER JOIN `values` v
ON v.id = r.r_status_id
LEFT JOIN tasks t
on t.id_requirement = r.id
WHERE 1 = 1
ORDER BY req_id desc
这就是结果:
如您所见,有 2 个相同的 req_id (48) 。我想出现一次并获取 worked
中最后两行的总和。我该如何处理?
这是事件结构:
这是任务结构:
这是需求结构:
最佳答案
按您需要的所有要求列将您的事件表包含在 JOIN、GROUP 中,并添加总和。由于您正在聚合任务,因此 SELECT 子句中不能包含 taskid。
SELECT r.id as req_id,
r.project_id,
r.name as req_name,
r.cost,r.estimated,
p.name as project_name,
v.name AS `status` ,
SEC_TO_TIME(SUM(TIME_TO_SEC(a.duration)))
FROM requirements r
INNER JOIN projects p ON p.projectid = r.project_id
INNER JOIN `values` v ON v.id = r.r_status_id
LEFT JOIN tasks t ON t.id_requirement = r.id
LEFT JOIN activities a ON a.taskid=t.taskid
WHERE 1 = 1
GROUP BY r.id, r.project_id, r.name,r.cost,r.estimated,p.name, v.name
ORDER BY req_id desc
关于mysql - 如何获得一列的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23992730/