我的任务是统计每个员工的缺勤总天数。
我编写了以下查询
SELECT name
,surname
,absentdays
FROM (
SELECT name
,surname
,DATEDIFF("d", fromdate, todate) AS absentdays
FROM DiseaseReport D
, Employees E
WHERE E.number = D.empnumber
)
虽然这个查询工作得很好,但它没有给我每个员工的“总”缺勤天数。相反,我为每个员工获得更多行(如果适用)。
我尝试应用 SUM(absentdays) 或 GROUP BY 'name',但我猜这些不是选项,因为生成了 'absentdays' 列。
你们能给我一个替代解决方案来应对这个“挑战”吗?
最佳答案
将函数(在您的例子中,sum
)应用于“生成”列没有任何问题:
SELECT name,
surname,
SUM(absentdays) AS total_absent_days
FROM (SELECT name,
surname,
DATEDIFF("d", fromdate, todate) AS absentdays
FROM DiseaseReport D, Employees E
WHERE E.number = D.empnumber
)
GROUP BY name, surname
关于mysql - 'generated' 列上的 SQL SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23566152/