1

ログ テーブル内のレコードを日付別にグループ化し、その特定の日の正社員または特別従業員によるアクセス数をグループ化する必要があります。アクセスは区別する必要があります。たとえば、あるタイプのユーザーが 2 回ログインした場合、その日に 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 に答える