코딩 테스트 연습/[프로그래머스][리트코드] MySQL

570. Managers with at Least 5 Direct Reports

duswjd_data 2025. 8. 29. 09:06

문제

https://leetcode.com/problems/managers-with-at-least-5-direct-reports/description/


문제 설명

  • 직속 부하가 5명 이상인 매니저의 이름을 출력

정답 코드

SELECT name
FROM employee
WHERE id IN (SELECT managerId
             FROM employee
             GROUP BY managerID
             HAVING count(managerID) >= 5)

개선된 코드

SELECT name
FROM employee
WHERE id IN (
    SELECT managerId
    FROM employee
    WHERE managerId IS NOT NULL
    GROUP BY managerId
    HAVING COUNT(*) >= 5
)

 

  • WHERE managerId IS NOT NULL 추가
    • NULL 값이 있는 경우 불필요하게 그룹화되므로 제외해야 정확한 결과를 얻을 수 있음
  • COUNT(*) 사용 권장
    • COUNT(managerId) 대신 COUNT(*)를 쓰면 널 값 여부에 관계없이 모든 행을 정확히 셈