0

現在、アナリストを雇用している部門で働くすべての従業員のすべての名前をリストする次の SQL クエリがあります。

SELECT ename
FROM emp
WHERE deptno IN (SELECT DISTINCT emp.deptno
                 FROM emp, dept
                 WHERE emp.deptno = dept.dept
                 AND job = 'Analyst');

2 人以上のアナリストを雇用している部門で働くすべての従業員の名前を表示するように変更するにはどうすればよいですか?

4

2 に答える 2

2

You can use GROUP BY to get a count of analysts for each department, then filter the employees based on this count:

SELECT emp.ename
FROM 
emp, (
    SELECT emp.deptno, count(*) as analyst_count
        FROM emp, dept
        WHERE emp.deptno = dept.dept
        AND job = 'Analyst'
        GROUP BY emp.deptno
) foo
WHERE emp.deptno = foo.deptno
AND foo.analyst_count >= 2;
于 2012-06-18T10:02:38.390 に答える
1

GROUP BYとを使用してサブクエリを変更するHAVING

SELECT emp.deptno
FROM emp, dept
WHERE emp.deptno = dept.dept AND job = 'Analyst'
GROUP BY emp.deptno HAVING COUNT(*) > 1
于 2012-06-18T10:10:59.033 に答える