【发布时间】:2014-05-09 13:41:14
【问题描述】:
我的任务是统计每位员工的总缺勤天数。
我写了以下查询
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' 列。
你们能给我这个“挑战”的替代解决方案吗?
【问题讨论】:
-
与问题无关,但您应该考虑switching to the ANSI 92 Explicit JOIN syntax,您使用的 ANSI 89 语法(顾名思义)已经过时了 20 多年。
-
如果这个查询“工作正常”,你必须使用 MySQL 以外的数据库,因为 MySQL DATEDIFF 函数需要两个参数(不是三个),并且必须为派生表分配别名。
-
好吧,我想当时情况肯定发生了变化,因为我使用的是 Access 2013,它工作得很好。
-
我认为 MySQL 没有任何改变。您的问题没有提到“Access 2013”作为 RDBMS。您的问题中对 RDBMS 的唯一引用是“mysql”标签,它指的是 MySQL,而不是 Access 2013。参考:http://stackoverflow.com/tags/mysql/info,