【问题标题】:Business Intelligence & Analytics商业智能与分析
【发布时间】:2018-06-12 05:21:26
【问题描述】:

当存在多个具有不同关系映射的表时,我们应该在报表中显示多少条记录?

假设表员工有 100 条记录
表部门有 35 条记录
table Region有10条记录

员工(0) - 地区(N) - (0-N) 关系
员工(0) - 部门(N) - (0-N) 关系

如果报告询问有多少员工为位于特定区域的特定部门工作,我们应该在报告中显示多少条记录?

【问题讨论】:

    标签: business-intelligence


    【解决方案1】:

    您提供的关系并不表明 Department 和 Region 之间存在直接关系。如果这可以通过 Employee 的连接推断出来,并且您按部门和地区分组以便对 Employee 进行计数,那么您将拥有与部门和地区一样多的记录。

    例如,此 SQL 将提供按地区和部门的计数(对表名和列名的完全猜测)。

    select region.name, department.name, count(distinct employee.id)
    from employee left join region on employee.region_id = region.id
                  left join department on employee.department_id = department.id
    group by region.name, department.name;
    

    如果不知道部门到区域的基数(因为它不是关系联接),我们不能说,但如果是 N 个部门到 1 个区域,您将返回 35 条记录,每个部门一条。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多