www.hackerrank.com/challenges/the-company/problem
문제에 대해 간단하게 설명하면, 회사코드(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)를 이용해 중복된 레코드를 추려내서 구한다.
'코딩테스트' 카테고리의 다른 글
프로그래머스 - 가장 큰 수 (0) | 2020.09.13 |
---|---|
프로그래머스 - 기지국 설치 (0) | 2020.09.07 |
입력받은 숫자를 우리가 읽는소리로 출력하는 코드를 작성하시오. (0) | 2019.01.07 |
온코더 - 13구하기 (0) | 2018.12.21 |
프로그래머스 - 완주하지 못한 선수(Level 1) (0) | 2018.11.26 |