1

各部門の従業員数を取得するためのクエリを作成しようとしています。これは私が内部クエリを使用して行っています。私が直面している問題は、カウントが10未満のレコードを除外する必要があることです。これが私のクエリの外観です-

SELECT 
   DPT.ID, 
   DPT.NAME, 
   (SELECT COUNT(1) FROM EMPLOYEE E WHERE E.DEPARTMENT_ID=DPT.ID) EMP_COUNT
FROM 
   DEPARTMENT DPT
WHERE 
   EMP_COUNT >=10; -- this part is not working

誰かが私が代わりに置き換えることができる何かを提案できEMP_COUNT >=10 ますか?前もって感謝します。

4

3 に答える 3

4

なぜサブクエリを使用するのですか?これはおそらくほとんどのRDBMS-esでより高速になります

SELECT     DPT.ID 
,          DPT.NAME 
,          COUNT(*) EMP_COUNT
FROM       DEPARTMENT DPT
INNER JOIN EMPLOYEE E
ON         DPT.ID = E.DEPARTMENT_ID
GROUP BY   DPT.ID 
,          DPT.NAME
HAVING     COUNT(*) >= 10;
于 2012-05-29T07:09:14.970 に答える
1
SELECT DPT.ID, DPT.NAME, DEPT_EMP_COUNT
FROM DEPARTMENT DPT, (SELECT E.DEPARTMENT_ID , COUNT(1) AS DEPT_EMP_COUNT 
                      FROM EMPLOYEE E
                      GROUP BY E.DEPARTMENT_ID ) EMP_COUNT 
WHERE EMP_COUNT.DEPARTMENT_ID = DPT.ID AND DEPT_EMP_COUNT > 10; 
于 2012-05-29T07:02:16.867 に答える
0

これを試して

select dept.deptId,
dept.deptName,
count(emp.empid) as numb_of_emps
from department dept inner join employee emp
on dept.deptid = emp.deptid
group by dept.deptid,dept.deptName
having count(emp.empid) >= 10
于 2012-05-29T07:15:29.813 に答える