문제
https://www.hackerrank.com/challenges/the-company/problem?isFullScreen=true
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문들도 완료!!
'SQL > HACKERRANK' 카테고리의 다른 글
Revising Aggregations - The Count Function (0) | 2024.01.09 |
---|---|
Binary Tree Nodes / 이진트리 조회 (2) | 2024.01.06 |
[MSSQL]Occupations / 직업, 이름으로 조회 (2) | 2024.01.02 |
The PADS / 사람에 따른 직업표시, 직업 수 조회 (1) | 2023.12.29 |
Type of Triangle / 삼각형 판단하기 (0) | 2023.12.27 |