mysql - 如何获得一列的总和?

标签 mysql sql

我有 3 个表:事件、任务和要求。我想返回特定要求的所有任务的所有持续时间。这是我的查询:

enter image description here

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

这就是结果: enter image description here

如您所见,有 2 个相同的 req_id (48) 。我想出现一次并获取 worked 中最后两行的总和。我该如何处理? 这是事件结构: enter image description here

这是任务结构: enter image description here

这是需求结构: enter image description here

最佳答案

按您需要的所有要求列将您的事件表包含在 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/

相关文章:

php - Codeigniter 中 AND 的事件记录

mysql - 查询速度,基于条件的数量?

mysql - 使用 IN 子查询时查询不使用索引

mysql - 使用子查询的错误查询优化器策略

sql - 如何选择具有不同日期条件的同一列值并在同一查询中显示为column1和column2

sql - 如何查找 Firebird 数据库中的所有文本 blob 字段

mysql - 使用 shell 脚本执行多个 MySQL 命令的更好方法

java - HQL hibernate 在 AT TIME ZONE 上出错

mysql - Doctrine 1.2 : get products where associated simple products have stock

php - codeigniter 中的子字符串查询