What a Beautiful Data!

[HackerRank] New Companies 문제 풀이 Mysql

by darami

[HackeRank] New Companies

 

New Companies | HackerRank

Find total number of employees.

www.hackerrank.com

그냥 읽고 풀면 얼레벌레 풀게 되어서 적으면서 완전히 분석해 보겠어요 ✌

 

문제 & 해석 

- 뜻밖의 영어 공부 

conglomerate: 복합기업_ A conglomerate is a multi-industry company (Wikipedia)

 

엠버의 복합 기업은 몇개의 새로운 회사를 얻었다. 각각의 회사는 아래의 위계를 따릅니다. 
아래의 테이블 스키마를 고려할때 회사_코드, 설립자 이름, 리드 매니저의 총 숫자, 시니어 매니저의 총 숫자, 매니저의 총 숫자를 출력하는 쿼리를 짜세요.  너의 출력은 회사_코드의 오름차순으로 정렬하세요. 

노트: 

- 테이블은 중복된 기록을 포함할 거에요.

- 회사_코드는 문자열이야, 그래서 sorting(정렬)은 숫자(numeric)가 되면 안돼.

  예를 들어 회사_코드가 C_1,C_2,C_10야 그러면 오름차순 회사_코드는 C_1, C_10, C_2 여야해

 

🔍잠시만..뭐라고?

그러니까..C_1, C_2 에서 0:a 1:b , 2:c 같은 취급이니까 

C_1 : C_b

C_10 : C_ba

C_2 : C_c

    

 

 

결국.. 몇번 해보니 바로 답이 나왔다. 근데 DISTINCT를 두번 넣을 필요 없잖아? 쓰다 보니 이렇게..

SELECT DISTINCT c.company_code
               ,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
INNER JOIN Employee AS e ON c.company_code=e.company_code
GROUP BY c.company_code, founder
ORDER BY c.company_code​

이렇게 해도 정답!

SELECT c.company_code
       ,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
INNER JOIN Employee AS e ON c.company_code=e.company_code
GROUP BY c.company_code, founder
ORDER BY c.company_code

자세한 비교는 좀 있다가 스터디를 통해서 하기! 

블로그의 정보

다람

darami

활동하기