0
我正在创建一个时间跟踪系统,并且我正在努力处理一个相当复杂的SQL查询。SQL查询包括SUM和GROUPBY
基本上我想创建一个列表,列出当前已记录工作会话的特定模块的所有赋值,包括每个赋值花费的总时间。
到目前为止,我已经使用TIMESTAMPDIFF()
比较StartTime
和EndTime
列计算花费在那个特定的工作会话TimeSpent
的总时间。然而,我很努力地理解,我将如何将AssignmentID
和SUM()
所有TimeSpent
列的工作会话分组在一起以给出总计。
这是我到目前为止构建的。
SELECT t2.*,
SUM(TIMESTAMPDIFF(second, t1.StartTime, t1.EndTime)) AS TimeSpent
FROM work_session t1
LEFT JOIN assignment t2 ON t1.AssignmentID = t2.AssignmentID
LEFT JOIN module t3 ON t2.ModuleID = t3.ModuleID
LEFT JOIN course t4 ON t3.CourseID = t4.CourseID
WHERE t2.ModuleID = 3
GROUP BY t1.AssignmentID
考虑提供适当的DDL(和/或一个平方根)与DE一起SIRED结果集。另外,请注意您的WHERE条件将t3作为INNER JOIN呈现。如果您想要一个OUTER JOIN,请将其移至JOIN子句。 – Strawberry
您需要在group by子句中包含select中的所有列才能使其工作。另请参阅Group By Grouping Sets((所有列)) – Jaypal
@Jaypal MySQL允许选择未在GROUP BY中列出的列,它会返回相应组中的任何值。 – Vatev