New Companies / 새로운 회사

개발자지니!
|2024. 1. 8. 20:40
728x90

문제

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

 

New Companies | HackerRank

Find total number of employees.

www.hackerrank.com

Amber의 대기업은 최근 몇몇 새로운 회사를 인수했습니다. 각 회사는 다음 계층 구조를 따릅니다.

 

 

아래 테이블 스키마가 주어지면 company_code , 창립자 이름, 총 리드 관리자 수, 총 고위 관리자 수, 총 관리자  및 총 직원 수를 인쇄하는 쿼리를 작성합니다 . company_code 를 오름차순으로 출력을 정렬하세요.

 

회사: 회사_코드  회사의 코드이며 창립자 는 회사의 창립자를 의미합니다.

Lead_Manager: Lead_manager_code  리드 관리자의 코드이고, company_code 는 근무 회사의 코드입니다.

Senior_Manager: Senior_manager_code 는 선임 관리자의 코드이고, Lead_manager_code 는 수석 관리자  코드이며, company_code 는 근무 회사의 코드입니다.

Manager: Manager_code 는 관리자의 코드, Senior_manager_code 는 고위 관리자의 코드, Lead_manager_code 는 수석 관리자  코드, company_code 는 근무 회사의 코드입니다.

Employee: Employee_code 는 직원의 코드, Manager_code  관리자의 코드, Senior_manager_code 는 고위 관리자의 코드, Lead_manager_code 는 수석 관리자의 코드, company_code  근무 회사의 코드입니다.

 

 

 

풀이(MSSQL)

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 E.employee_code)
  FROM Company AS C
  JOIN Employee AS E ON C.company_code = E.company_code
 GROUP BY C.company_code,
          C.founder
 ORDER BY C.company_code

 

 

SELECT C.company_code,
       C.founder,
       COUNT(DISTINCT LM.lead_manager_code),
       COUNT(DISTINCT SM.senior_manager_code),
       COUNT(DISTINCT M.manager_code),
       COUNT(DISTINCT E.employee_code)
  FROM Company AS C
  LEFT JOIN Lead_Manager AS LM ON C.company_code = LM.company_code
  LEFT JOIN Senior_Manager AS SM ON LM.lead_manager_code = SM.lead_manager_code
  LEFT JOIN Manager AS M ON SM.senior_manager_code = M.senior_manager_code
  LEFT JOIN Employee AS E ON M.manager_code = E.manager_code
 GROUP BY C.company_code,
          C.founder
 ORDER BY C.company_code

 

 

 

 

이번 문제로 Advanced Select문들도 완료!!

 

300x250