본문으로 바로가기

해커랭크(SQL) - New Companies

category 코딩테스트 2020. 9. 7. 14:16

 

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)를 이용해 중복된 레코드를 추려내서 구한다.