Mo!
(HackerRank) 해커랭크 SQL [New Companies] Oracle 풀이 본문
SQL

(HackerRank) 해커랭크 SQL [New Companies] Oracle 풀이

5사 2021. 12. 8.

문제 링크

https://www.hackerrank.com/challenges/the-company/problem?isFullScreen=true 

 

New Companies | HackerRank

Find total number of employees.

www.hackerrank.com

엠버의 대기업이 막 새로운 회사들을 인수했습니다. 각 회사는 다음 계층을 따릅니다.

아래의 표 스키마를 참고하여 company_code, 설립자명, 총 리드 매니저 수, 총 선임 매니저 수, 총 관리자 수, 총 직원 수를 출력하기 위한 질의를 작성하세요. company_code 오름차순으로 출력하세요.

테이블에는 중복된 레코드가 포함될 수 있습니다.
company_code가 문자열이므로 정렬은 숫자일 수 없습니다.
예를 들어 company_code가 C_1, C_2, C_10이면 오름차순 company_code는 C_1, C_10, C_2가 됩니다.

 

JOIN을 이용한 풀이

 

select c.company_code, c.founder, count(distinct(e.lead_manager_code)), count(distinct(e.senior_manager_code)), count(distinct(e.manager_code)), count(distinct(employee_code))
from employee e join company c
on e.company_code = c.company_code
group by c.company_code, c.founder
order by 1;

 

-- 처음에 작성한 코드는 모든 테이블을 JOIN 하여 했는데, employee와 company만 JOIN해도 출력이 가능하다

-- JOIN 조건은 employee 테이블의 company_code와 company 테이블의 company_code가 같다라고 해준다

 

--  company_code, 설립자명을 출력하고 각 회사별 총 리드 매니저 수, 총 선임 매니저 수, 총 관리자 수, 총 직원 수를 출력해야 하기 때문에, company_code, 설립자명을 기준으로 그룹을 지어야 한다

-- 총 리드 매니저 수, 총 선임 매니저 수, 총 관리자 수, 총 직원 수를 셀 때는 distinct를 사용하여 중복을 제거한다

-- company_code를 오름차순으로 정렬한다

 

Comments