배우기/SQL

HackerRank - New Companies (SELECT 절 서브쿼리)_MySQL

인사잘해 2022. 4. 24. 22:48

안녕하세요!

 

해커랭크의 New Companies 문제입니다.

 

- 문제

각 회사는 아래의 계층을 따른다.

'Founder - Lead Manager - Senior Manager - Manager - Employee' 

아래의 주어진 테이블을 참조하여

company_code, founder name, lead manager 의 수, senior manager 의 수, manager 의 수,

employee 의 수를 조회한다. 결과는 company_code 의 오름차순으로 정렬한다.

 

- 테이블

- 쿼리

1. SELECT 절 서브쿼리

select C.company_code, C.founder
     , (select count(distinct lead_manager_code) from lead_manager
        where company_code = C.company_code) as ld
     , (select count(distinct senior_manager_code) from senior_manager
        where company_code = C.company_code) as sn
     , (select count(distinct manager_code) from manager
        where company_code = C.company_code) as mn
     , (select count(distinct employee_code) from employee
        where company_code = C.company_code) as ep
from company as C
order by company_code

1) company_code, founder 는 Company 테이블에서 찾는다.

2) 직급 별 인원 수는 where 절에 Company 테이블과 company_code 가 같은 조건을

   각각의 테이블(Lead_Manager, Senior_Manager, Manager, Employee)에서 찾는다.

3) where 조건에 해당하는 데이터는 중복 제거하여 COUNT 집계한다.

4) company_code 를 기준으로 오름차순 정렬한다.