728x90
반응형
New Companies | HackerRank
Find total number of employees.
www.hackerrank.com
문제





문제 접근 방식
회사코드와 창립자, 그리고 각 회사 별 lead_manager, senior_manager, manager, employee의 수를 조회하는 문제이다.
테이블들을 잘 살펴보면, Employee 테이블에 company_code부터 조회해야 하는 데이터를 다 가지고 있다.
Employee 테이블에서 창립자 데이터만 들고오면 되기에 Company 테이블과 조인하면 끝!
SELECT A1.COMPANY_CODE
, A1.FOUNDER
, COUNT(DISTINCT A2.LEAD_MANAGER_CODE)
, COUNT(DISTINCT A2.SENIOR_MANAGER_CODE)
, COUNT(DISTINCT A2.MANAGER_CODE)
, COUNT(DISTINCT A2.EMPLOYEE_CODE)
FROM Company A1
LEFT JOIN Employee A2
ON A1.COMPANY_CODE = A2.COMPANY_CODE
GROUP BY A1.COMPANY_CODE, A1.FOUNDER
ORDER BY A1.COMPANY_CODE
;
만약, Employee 테이블에 원하는 데이터가 없을 경우에는 주어진 테이블들을 아래와 같이 하나씩 조인해서 조회해도 됨
SELECT A1.COMPANY_CODE
, A1.FOUNDER
, COUNT(DISTINCT A2.LEAD_MANAGER_CODE)
, COUNT(DISTINCT A3.SENIOR_MANAGER_CODE)
, COUNT(DISTINCT A4.MANAGER_CODE)
, COUNT(DISTINCT A5.EMPLOYEE_CODE)
FROM Company A1
LEFT JOIN Lead_Manager A2
ON A1.COMPANY_CODE = A2.COMPANY_CODE
LEFT JOIN Senior_Manager A3
ON A1.COMPANY_CODE = A3.COMPANY_CODE
AND A2.LEAD_MANAGER_CODE = A3.LEAD_MANAGER_CODE
LEFT JOIN Manager A4
ON A1.COMPANY_CODE = A4.COMPANY_CODE
AND A2.LEAD_MANAGER_CODE = A4.LEAD_MANAGER_CODE
AND A3.SENIOR_MANAGER_CODE = A4.SENIOR_MANAGER_CODE
LEFT JOIN Employee A5
ON A1.COMPANY_CODE = A5.COMPANY_CODE
AND A2.LEAD_MANAGER_CODE = A5.LEAD_MANAGER_CODE
AND A3.SENIOR_MANAGER_CODE = A5.SENIOR_MANAGER_CODE
AND A4.MANAGER_CODE = A5.MANAGER_CODE
GROUP BY A1.COMPANY_CODE, A1.FOUNDER
ORDER BY A1.COMPANY_CODE
;728x90
반응형
'코딩 테스트 > MySQL' 카테고리의 다른 글
| [HackerRank] The Report (0) | 2025.07.25 |
|---|---|
| [HackerRank] Weather Observation Station 20 (0) | 2025.07.24 |
| [HackerRank] Binary Tree Nodes (0) | 2025.07.21 |
| [HackerRank] Weather Observation Station 5 (0) | 2025.07.18 |
| [MySQL 코딩테스트 연습] 2. JOIN (4) 보호소에서 중성화한 동물 (0) | 2022.08.10 |