https://www.hackerrank.com/challenges/earnings-of-employees/problem?h_r=internal-search
Top Earners | HackerRank
Find the maximum amount of money earned by any employee, as well as the number of top earners (people who have earned this amount).
www.hackerrank.com
가장 높은 연봉과 가장 높은 연봉을 받는 사람 수를 출력하는 문제
<<내 풀이>>
SELECT MAX(salary * months), COUNT(*)
FROM employee
WHERE salary * months = (SELECT MAX(salary * months) FROM employee)
earning 열을 추가해주는게 가장 직관적이긴 하지만 아직 그렇게 하는 방법을 모른다 ..
그래서 우선 가장 높은 연봉을 구해야겠다고 생각했다
가장 높은 연봉을 구하고, 그 조건에 맞는 row 수를 count 하면 되겠다 싶었다
그래서 가장 높은 연봉을 구하기 위해 SELECT MAX(salary * months) FRPM employee 를 썼다
이제 가장 높은 연봉을 받는 사람 수와 함께 출력해야 하므로 가장 높은 연봉을 WHERE절의 서브쿼리로 사용했다
높은 연봉값은 동일할테니까 SELECT MAX(salary * months) 를 해줬고, row수를 COUNT(*)를 이용해 세주었다
서브쿼리를 제대로 배우면 푸는 속도가 더 빨라질것같다
<<강의 풀이>>
/*
1. earnings 만들어주기
2. 각 earning 별로 몇명이 그만큼 벌었는지 계산 (GROUP BY) ex. 5000 1 / 3000 2 ...
3. earning 중에 가장 큰 값 (ORDER BY, LIMIT)
*/
SELECT salary * months AS earnings
, COUNT(*) -- SELECT 된 행의 전체 개수
FROM employee
GROUP BY earnings
ORDER BY earnings DESC
LIMIT 1
SELECT 문에 earning을 만들어서 출력에 새로운 열을 만들어주는 방식
earning 정보를 GROUP BY를 이용해서 정리해주고
ORDER BY로 정렬 후 LIMIT 만 이용해서 원하는 정보를 출력함
'SQL' 카테고리의 다른 글
leetcode_reformat department table (0) | 2023.01.13 |
---|---|
HackerRank_SQL_Type of Triangle <못품> (0) | 2023.01.11 |
HackerRank_SQL_Weather Observation Station 15, 소숫점 (0) | 2023.01.05 |
HackerRank_SQL_Higher Tan 75 Marks, 문자열 자르기 (0) | 2023.01.05 |
HackerRank_SQL_Weather Observation Station 12 (0) | 2023.01.05 |