首页 > 解决方案 > 如何显示另一个表的计数?

问题描述

我是甲骨文的新手。

现在,我想显示在每个部门工作的员工人数,

每个部门的员工人数必须少于 2 人。

但我只展示department_iddepartment_name

我不知道怎么表现count

SELECT d.DEPARTMENT_ID, d.DEPARTMENT_NAME
FROM DEPARTMENTS d
WHERE 2 > (SELECT COUNT(e.EMPLOYEE_ID)
           FROM EMPLOYEES e
           WHERE d.DEPARTMENT_ID = e.DEPARTMENT_ID);

我的输出:

DEPARTMENT_ID | DEPARTMENT_NAME 
...           | ...   

正确的输出:

DEPARTMENT_ID | DEPARTMENT_NAME |  COUNT(EMPLOYYE_ID) |
...           | ...             |  ...                |

标签: oracle

解决方案


试试这个(新增处理部门无员工案件的更正)

SELECT d.DEPARTMENT_ID, d.DEPARTMENT_NAME, NVL(e2.cnt,0) count
FROM DEPARTMENTS d
LEFT JOIN (select e.department_id, count(*) cnt from employees e group by e.department_id) e2
  ON d.department_id=e2.department_id 
where e2.cnt <2

或者,更紧凑

SELECT d.DEPARTMENT_ID, d.DEPARTMENT_NAME, count(e2.employee_id)
FROM DEPARTMENTS d
LEFT JOIN employees e ON d.department_id=e.department_id 
GROUP BY d.DEPARTMENT_ID, d.DEPARTMENT_NAME 
HAVING COUNT(*) <2

推荐阅读