본문 바로가기
알고리즘/SQL

[MySQL] SQL HackerRanks_Top Earners

by camezii 2022. 4. 5.

문제  👀

Write a query to find the maximum total earnings for all employees as well as the total number of employees who have maximum total earnings. Then print these values as space-separated integers.

 

Sample Input

 

 

Sample Output

 

69952 1

 

Explanation

 

The table and earnings data is depicted in the following diagram: 

 

풀이  👀

SELECT MAX(EARNINGS), COUNT(*)
FROM
    (
        SELECT MONTHS*SALARY AS EARNINGS
        FROM EMPLOYEE
    ) E
GROUP BY EARNINGS
ORDER BY EARNINGS DESC LIMIT 1;

➿ 풀이과정 정리 ➿

 

1. 공백과 함께 두 값을 출력해내라는 조건에 CONCAT 함수를 사용해야 한다고 생각했는데 굳이 그러지 않아도 해결이 됐다..!

Oracle은 '||' 기호를 활용하여 문자열을 붙이지만, MySQL에서의 '||' 기호는 논리연산자 OR을 의미한다.
MySQL의 경우, CONCAT 함수를 이용하여 문자열을 이어붙인다.

 

2. 작년에 SQL 연습할 때 Oracle 기준으로 했는데 최근에 MySQL 기준으로 쿼리를 작성해보면서 MySQL에서 작성하는 서브쿼리에는 별칭(Alias)이 필요하다는 것을 알게 되었다.

 

별칭 관련 오류 이미지

 

댓글