www.hackerrank.com/challenges/the-company/problem
New Companies | HackerRank
Find total number of employees.
www.hackerrank.com
문제에 대해 간단하게 설명하면, 회사코드(company_code)에 해당하는 직급별 인원수를 각각 구하는 문제이다.
테이블 별로 직급에 해당하는 데이터가 존재한다. join을 해서 풀어야하나 생각하다가 챕터 내용이 advanced select이기 때문에
select를 이용해 풀어봤다.
company 테이블의 company_code가 pk이고 나머지 테이블은 company 테이블의 company_code를 fk로 참조하고 있다.
select문에 subquery를 이용해 각각의 인원수를 적절하게 구한다.
select a.company_code, a.founder,
(select count(distinct lead_manager_code) from lead_manager where company_code = a.company_code),
(select count(distinct senior_manager_code) from senior_manager where company_code = a.company_code),
(select count(distinct manager_code) from manager where company_code = a.company_code),
(select count(distinct employee_code) from employee where company_code = a.company_code)
from company a
order by a.company_code asc;
문제를 살펴보면 중복된 레코드가 존재할수 있다고 나와있다. count(distinct)를 이용해 중복된 레코드를 추려내서 구한다.