【问题标题】:SQL count based on two columns基于两列的 SQL 计数
【发布时间】:2014-12-10 14:17:20
【问题描述】:

我有一个员工培训记录表 (TRAINREC)

在此表中,它包含他们的employ_ref 和Course_Ref。

我需要计算有多少人完成了所有 5 门可用的课程,有多少人完成了 4、3、2、1 和 0 门

这可能是他们多次完成同一课程的情况,因此在此表中同一课程会有多个条目,但仍应仅计为一个。

计算条目数(SQL Server)和计算有多少人完成了“x”门课程的最佳方法是什么。

【问题讨论】:

    标签: sql sql-server-2008 count distinct multiple-columns


    【解决方案1】:

    假设你的员工主表是Employee,你需要做两个不同的统计,第一个是每个人完成了多少课程:

    SELECT  e.employ_ref,
            Courses = COUNT(DISTINCT tr.Course_Ref)
    FROM    Employee AS e
            LEFT JOIN TrainRec AS tr
                ON tr.employ_ref = e.employ_ref
    GROUP BY e.employ_ref;
    

    使用DISTINCT 将确保每个不同的课程只计算每个员工一次。

    然后你需要做一个单独的计数,对第一个查询中的Courses 列进行分组:

    SELECT  Courses,
            Employees = COUNT(*)
    FROM    (   SELECT  e.employ_ref,
                        Courses = COUNT(DISTINCT tr.Course_Ref)
                FROM    Employee AS e
                        LEFT JOIN TrainRec AS tr
                            ON tr.employ_ref = e.employ_ref
                GROUP BY e.employ_ref
            ) AS t
    GROUP BY Courses;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-19
      • 2021-05-28
      • 1970-01-01
      相关资源
      最近更新 更多