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