2017-10-27 4 views
2

sql質問を少なくとも2人以上持つすべての部門を表示する必要があります。少なくとも2名の従業員がいる部門を見つける

SELECT department.name 
FROM department 
INNER JOIN employee 
ON department.id = employee.department_id 
GROUP BY employee.id 
HAVING COUNT(employee.id) >= 2; 

それは私が間違った列にGROUP BYを使用して考えて、このクエリ

+0

部門名でグループ化する必要があります。 – clemens

答えて

3

を使って何を示していません。
各部門の従業員をカウントする場合は、GROUP BY department.idが必要です。

SELECT department.id, department.name, COUNT(employee.id) AS total_employee 
FROM department 
INNER JOIN employee 
ON department.id = employee.department_id 
GROUP BY department.id, department.name 
HAVING COUNT(employee.id) >= 2; 
1

この試してみてください:あなたの限界(代わりの2、別の値)を変更したい場合は、あなたのクエリが動作します。このように

SELECT d.name 
FROM department d 
WHERE 
    (SELECT COUNT(*) FROM employee e 
    WHERE d.id = e.department_id) >= 2 

を。

希望する場合はINNER JOINを使用すると、従業員のいないすべての部門は今後使用できません。

関連する問題