https://www.hackerrank.com/challenges/earnings-of-employees/problem?h_r=internal-search
가장 높은 연봉과 가장 높은 연봉을 받는 사람 수를 출력하는 문제
<<내 풀이>>
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 |