문제 👀
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)이 필요하다는 것을 알게 되었다.
'알고리즘 > SQL' 카테고리의 다른 글
[MySQL & Oracle] 문법 비교 (0) | 2022.04.05 |
---|---|
[Oracle] 오류 'group function is nested too deeply' (0) | 2022.04.05 |
[MySQL] SQL HackerRanks_The Bundler (0) | 2022.04.04 |
SQLD 공부 계기와 공부 방법 (0) | 2022.01.23 |
댓글