반응형
*MySQL 버전, 집계 함수(Aggregation) 문제입니다.
해커랭크 Top Earners 문제, 샘플, 설명
- 문제 의도: aggregation 사용
- 직원들의 총수입(salary*months) 구하기
- 최고 총 수입액 구하기
- 최고 총 수입액 직원 수 구하기
- 결과값 사이에 공백 두기
대충 샘플에서는 최고 수입액이 69952인데 카운트해보니 킴벌리 혼자라는 말.
해커랭크 Top Earners 답
- GROUP BY 1: 총 수입액 기준, 직원 수 카운트 해야하기 위함
- 내림차순 정렬 및 LIMIT 1: 최고 총 수입액 구하기 위함
- 결과값들 사이에 공백 두는 것 때문에 CONCAT 사용하려 했으나, 아래 쿼리로도 결과가 같아서 정답.
# total earnings: monthly salary*months
SELECT salary*months
, COUNT(salary*months)
FROM Employee
GROUP BY 1
ORDER BY 1 DESC
LIMIT 1;
추가 정리
조금이라도 더 줄인 쿼리.
SELECT salary*months
, COUNT (*)
FROM Employee
GROUP BY 1
ORDER BY 1 DESC
LIMIT 1;
내림차순과 LIMIT 대신 MAX사용, 그리고 요구에 따라 CONCAT 사용.
SELECT CONCAT(
(SELECT MAX(salary*months) FROM Employee)
, ' '
, (SELECT COUNT(employee_id)
FROM Employee
WHERE (salary*months) = (SELECT MAX(salary*months) FROM Employee))
);
두 쿼리의 종합 버전(CONCAT 미사용)
SELECT salary*months
, COUNT(*)
FROM Employee
WHERE (salary*months) = (SELECT MAX(salary*months) FROM Employee)
GROUP BY 1;
반응형
'SQL > HackerRank(해커랭크)' 카테고리의 다른 글
HackerRank(해커랭크) MySQL Weather Observation Station 19 문제 답 (2) | 2023.10.06 |
---|---|
HackerRank(해커랭크) MySQL Average Population of Each Continent 문제 답 (0) | 2023.10.05 |
HackerRank(해커랭크) MySQL Weather Observation Station 15 문제 답 (0) | 2023.10.02 |
HackerRank(해커랭크) MySQL Binary Tree Nodes 문제 답 (0) | 2023.09.30 |
HackerRank(해커랭크) MySQL The Blunder 문제 답 (0) | 2023.09.24 |