次のデータベース設計があります。
Employees Table: EmployeeID, Name, OrgCode
Departments Table: OrgCode, DepatName
CompleteSurvey Table: ID, ParticipantID
また、各部門の従業員の総数と、各部門で調査を完了した参加者の総数を示す表も作成する必要があります。次に、各部門の参加率を示したいと思います。これは、主に参加者の総数/従業員の総数に等しくなります。
次の 2 つのクエリを思いついたのですが、上記の要件を示すクエリを 1 つ考え出さなければならないので、どうすればよいでしょうか?
各部門の総従業員数:
SELECT COUNT(DISTINCT dbo.Employees.EmployeeID) AS [Total Number of Employees],
dbo.Departments.DepartmentName
FROM dbo.Departments
INNER JOIN dbo.Employees ON dbo.Departments.OrgCode = dbo.Employees.OrgCode
GROUP BY dbo.Departments.DepartmentName
各部門の合計参加者数:
SELECT COUNT(DISTINCT dbo.Employees.EmployeeID) AS [Total Number of Employees],
dbo.Departments.DepartmentName
FROM dbo.Departments
INNER JOIN dbo.Employees ON dbo.Departments.OrgCode = dbo.Employees.OrgCode
INNER JOIN dbo.CompleteSurvey ON dbo.Employees.EmployeeID = dbo.CompleteSurvey.RespondantID
GROUP BY dbo.Departments.DepartmentName
参加者を表示する 2 番目のクエリの問題は、参加者がいない場合でもすべての部門が表示されるわけではなく、ゼロが表示されるはずです。
アップデート:
基本的に、私が欲しいのは、各部門の従業員の総数と、各部門の調査を完了した参加者の総数を示す 1 つのクエリを作成し、参加率を示すことです。