2012-03-30 65 views
0

我正在开发一个基于Web的应用程序,用于跟踪公司中每个员工的培训如何在每门课程中显示每个部门的完成百分比?

。我有以下数据库

设计:

(每个表中的第一属性是除了最后表的主键)

我有实现一个图表或表,其中显示在这些课程的每门课程中,每个部门的完成百分比为,但我不知道如何提出这个查询。该查询应显示分区名称,课程名称,每个课程中的参加者人数以及完成百分比

那么,您可以帮助我解决这个问题吗?

+2

什么表示完成课程? – RedFilter 2012-03-30 18:48:51

+0

完成百分比表示参加课程的参与者或员工总数/该部门的员工总数。 Employee_Course表:显示雇员的用户名和已完成或已完成的课程的编号 – 2012-03-30 19:07:06

回答

0
select a.DivisionName, a.CourseName, a.ParticipantsCount, ParticipantCount/EmployeeCount * 100 as PercentCompleted 
from (
    select DivisionName, count(*) as EmployeeCount 
    from Division d 
    inner join Employee e on d.DivisionCode = e.DivisionCode 
    group by DivisionName 
) dc 
inner join (
    select d.DivisionName, c.CourseName, count(*) as ParticipantCount 
    from Course c 
    inner join Employee_Course ec on c.CourseID = ec.CourseID 
    inner join Employee e on ec.Username = e.Username 
    inner join Division d on e.DivisionCode = d.DivisionCode 
    group by DivisionName, CourseName 
) a on dc.DivisionName = a.DivisionName 
+0

谢谢你帮助你。我试图在SQLServer Management Studio中执行查询,但我得到以下错误,但我不知道为什么:Msg 156,Level 15,State 1,Line 8 关键字'OUTER'附近的语法不正确。 Msg 102,Level 15,State 1,Line 15 'a'附近语法不正确。 – 2012-03-30 20:00:17

+0

他完成了内部外连接,可能是一个错字,应该是内连接我认为 – mattytommo 2012-03-30 20:27:36

+0

@MohammedAli错字,固定在上面 – RedFilter 2012-04-02 17:10:58

相关问题