次のデータベース設計があります。
Employee Table: Username, Name, DivisionCode
Division Table: SapCode, DivisionShortcut
Courses Table: CourseID, CourseName, GroupID
Groups Table: GroupID, GroupName
Employee_Courses Table: EmployeeID, CourseID
部門、コース、および各部門の参加者の総数を示す次のクエリを思いつきました。
SELECT dbo.Divisions.DivisionShortcut, dbo.courses.CourseName, COUNT(dbo.employee_courses.courseId) AS [Total Number of Participants]
FROM dbo.courses INNER JOIN
dbo.employee_courses ON dbo.courses.CourseID = dbo.employee_courses.courseId INNER JOIN
dbo.groups ON dbo.courses.GroupID = dbo.groups.ID RIGHT OUTER JOIN
dbo.employee AS employee_1 INNER JOIN
dbo.Divisions ON employee_1.DivisionCode = dbo.Divisions.SapCode ON dbo.employee_courses.employeeId = employee_1.Username
WHERE (dbo.courses.GroupID = 1)
GROUP BY dbo.courses.CourseID, dbo.courses.CourseName, dbo.Divisions.DivisionShortcut
上記に加えて、各部門の従業員の総数と各部門の完了率も表示したいと思います。ちなみに、修了率は(各コースの総受講者数÷各部門の総社員数)です。
では、どうやってそれを行うのですか?