[HackerRank] Top Earners

주연·2023년 2월 8일
0

SQL 문제 풀이

목록 보기
3/28
post-thumbnail

230208

문제

Top Earners

최대 수입(months*salary)과 그 수입을 가진 직원의 수 구하기

풀이

아니 왜 WITH문이 안 써지는 거야?
뭐 할 때마다 오류난다

SELECT MAX(earnings), COUNT(*) count
FROM (
    SELECT name
    , months*salary earnings
    FROM Employee
) earn
GROUP BY earnings
ORDER BY count DESC
LIMIT 1

뭔가 돌아간 느낌이라면 내 착각일까
.
.
맞다 뭐한거지
서브쿼리 왜 쓴건지 모르겠다. 서브쿼리쓰고 싶어서 썼는데 order by랑 limit쓸 꺼였으면 안써도 됐다.
서브쿼리빼고 그 자리에 Employee써서 좀만 고치면 돌아갈 듯

SELECT MAX(months*salary), COUNT(*) count
FROM Employee
GROUP BY months*salary
ORDER BY count DESC
LIMIT 1

이렇게...ㅎ

  • 서브쿼리 이용 문제 풀이 확인
--WHERE절 서브쿼리 이용
SELECT months*salary earnings
	, COUNT(*) count
FROM Employee
WHERE months * salary = (SELECT MAX(months*salary FROM Employee)
GROUP BY earnings

--HAVING절 서브쿼리 이용
SELECT months*salary earnings
	, COUNT(*) count
FROM Employee
GROUP BY earnings
HAVING earnings = (SELECT MAX(months*salary FROM Employee)

서브쿼리를 쓰려면 where이나 having처럼 조건에 썼어야됐었다.

profile
공부 기록

0개의 댓글