我对SQL非常陌生并且拥有以下(看似简单的)数据库查询。
我有一个表格,其中包含一组员工的所有时间跟踪信息:
date employeeId timeIn timeOut
01/01/20 1355 12:00 4:00
01/01/20 1355 4:30 6:00
01/01/15 1234 9:00 12:00
02/01/15 5555 5:00 6:00
02/01/15 1111 1:00 4:00
foreach date,我想计算一下有效的独特员工数量,以表格结尾:
date totalEmployeesWorked
01/01/15 2
02/01/15 2
我还想忽略几个Id。到目前为止,我提出了:
我在MS Access 2003中尝试了以下查询:
SELECT [TimeTrackingLog-sql].date, COUNT(DISTINCT callerName)
FROM [TimeTrackingLog-sql]
GROUP by [TimeTrackingLog-sql].date
它抱怨了一个“缺少运算符”,突出显示了我对callerName的使用。
答案 0 :(得分:1)
好消息是您的查询完全合法(并且直截了当!)ANSI SQL,可以在任何合理的数据库上运行。坏消息是您使用的MS Access不支持此语法。
但是可以使用子查询解决这个问题:
SELECT t.date, COUNT(*)
FROM (SELECT DISTINCT [TimeTrackingLog-sql].date,
[TimeTrackingLog-sql].callerName
FROM [TimeTrackingLog-sql]) t
GROUP BY t.date
答案 1 :(得分:0)
这将有效: -
SELECT date, count(distinct `employeeId`) FROM `table_name` group by date;