1

我需要按日期对日志表中的记录进行分组,并在特定日期对普通员工或特殊员工的访问次数进行分组。访问应该是不同的,例如,如果一种类型的用户登录了两次,那么当天应该只计算一次

Type
PK typeId
name

Employee
PK empId
firstName
lastName
FK typeId     


Log
PK logId
FK empId
date  

我试过下面的查询,但无济于事。当我用计数替换总和/大小写时,它可以工作,但是我无法指定要明确计数的用户类型

SELECT L.`date`
SUM(DISTINCT CASE WHEN E.typeId =1 THEN 1 ELSE 0 END) as specialEmployeeAccesses,
SUM(DISTINCT CASE WHEN E.typeId=2 THEN 1 ELSE 0 END) as regularEmployeeAccesses
FROM LOG L
INNER JOIN
Employee E
ON E.empId = L.empId
GROUP BY L.`date`
4

1 回答 1

1

尝试:

SELECT L.`date`,
       COUNT(DISTINCT CASE WHEN E.typeId=1 THEN E.empId END) 
            as specialEmployeeAccesses,
       COUNT(DISTINCT CASE WHEN E.typeId=2 THEN E.empId END) 
            as regularEmployeeAccesses
FROM LOG L
INNER JOIN Employee E
ON E.empId = L.empId
GROUP BY L.`date`
于 2013-04-12T12:36:11.653 回答