【问题标题】:Write a query to display the names of the department and the staff count in each department, if staff not exist display the count as 0编写查询显示部门名称和每个部门的人员数量,如果人员不存在,则显示数量为0
【发布时间】:2019-04-17 04:57:07
【问题描述】:

编写查询以显示部门名称和每个部门的人员数量,如果人员不存在,则显示数量为 0。为人员数量指定别名为 staff_count。根据部门名称对结果进行排序。

这是我尝试过的。

select department_name,count(*) as staff_count
from left join staff on department.department_id=staff.staff_id
group by department_name order by department_name;

我认为我的代码中缺少某些内容。

【问题讨论】:

  • 帮助我们帮助您 - 分享一些示例数据、您获得的结果以及您希望获得的结果。

标签: oracle


【解决方案1】:

我会把你的查询写成:

SELECT
    d.department_name,
    d.department_id,
    COUNT(s.staff_id) AS cnt
FROM department d
LEFT JOIN staff s
    ON d.department_id = s.department_id
GROUP BY
    d.department_name,
    d.department_id
ORDER BY
    d.department_name;

您想从department 连接到staff 表,将每个部门记录乘以它包含的员工人数。我们计算人员值,它处理给定部门没有人员的情况。

请注意,我假设department_id 是两个表中连接列的名称。如果不是,则相应地修改上述查询。

【讨论】:

    【解决方案2】:
    SELECT
        d.department_name,
        COUNT(s.staff_id) AS staff_count
    FROM department d
    LEFT JOIN staff s
        ON d.department_id = s.department_id
    GROUP BY
        d.department_name,
        d.department_id
    ORDER BY
        d.department_name;
    

    【讨论】:

      【解决方案3】:

      如果您想以其他方式执行此操作。然后你可以试试下面的代码。

      1 select d.department_name,count(s.staff_id) as staff_count
      2 from department d,staff s
      3 where d.department_id=s.department_id(+)
      4 group by department_name
      5 order by department_name;
      

      【讨论】:

        【解决方案4】:

        select department_name,count(student_name) as student_count from department 自然加入学生 按部门名称分组 按部门名称排序;

        【讨论】:

        • 点评来源: Stack Overflow 上不鼓励仅使用代码的答案,因为它们没有解释它是如何解决问题的。请编辑您的答案以解释此代码的作用以及它如何回答问题,以便它对 OP 以及其他也有类似问题的用户有用。请参阅:How do I write a good answer?。谢谢
        【解决方案5】:
        select 
            department_name,
            nvl(count(staff_id,0)as staff_count 
        from department
        inner join staff 
            on department.department_id=staff.department_id
        group by department_name
        order by department_name
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-19
          • 1970-01-01
          相关资源
          最近更新 更多