inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백문이불여일타] 데이터 분석을 위한 중급 SQL

Top Earners 질문있습니다

152

IIxxII

작성한 질문수 1

0

안녕하세요. 아래 쿼리로 실행할 시 에러가 나던데 혹시 어느부분이 잘못된건가욤??

해커랭크 - Top Earners

SELECT months*salary earnings,

                COUNT(employee_id)

FROM Employee

GROUP BY earnings

HAVING earnings =MAX(months*salary) 

sql

답변 1

0

이보민

안녕하세요 IIxxII님,

해당 문제에서는 직원들의 earnings 금액 별로 받고 있는 사원의 수를 구하고 그중에서 가장 높은 earnings를 가진 데이터만 뽑아오는 것을 조건으로 하고 있습니다.

HAVING 구문은 GROUP BY를 통해 묶인 각각의 그룹에 대해서 조건을 걸어 조건을 만족하는 그룹 데이터만 표시하게끔 필터링을 할 수 있는 구문인데요. HAVING을 통해서 그룹간의 비교를 하는 것은 어렵습니다.

ex) earnings = 1000 인 그룹만 필터링을 하는 것은 각 그룹에 대해 earnings가 1000인지 아닌지를 판단하면 되는 것이므로 필터링이 가능합니다.

그러나 어떤 그룹의 earnings 값이 가장 큰지, 또 그값과 같은 earnings를 가진 그룹이 무엇인지를 찾는 것은 HAVING 구문으로는 구할 수 없습니다.

ORDER BY, LIMIT를 이용하지 않고 문제 풀이를 하는 방법으로는 고급반에서 다루게 되는 개념인 서브쿼리를 이용하시는 방법도 있으니 참고해주시면 좋을 것 같습니다.

궁금증이 해소되셨길 바랍니다. 감사합니다.

리트코드 1280. Students and Examinations

0

91

3

16강 LEFT JOIN 리트코드 (183. Customers Who Never Order) 관련 질문

0

103

2

African Cities 문제관련 질문

0

64

1

SQL 코딩테스트 질문

0

231

1

HACKER RANK에서 문제찾기

0

107

2

강의 자료 다운로드

0

101

2

Asian population 문제가 없어요

0

86

2

INNER JOIN 에서 A.키 쓸때 빨간 색 나오고 'dause'

0

75

2

별칭 관련해서 질문 있습니다.

0

88

2

rising temperature 문제 질문

0

104

2

해커랭크 TOP EARNERS 문제 질문

0

110

1

ON 뒤에 질문

0

105

2

INNER JOIN 질문. 강의와 결과값이 다릅니다.

0

209

3

END, 뒤에 * 붙이면 에러가 뜹니다

1

212

2

CustomerID가 중복되서 나타나요

0

241

3

별칭이 전체 테이블을 못 불러와요.

0

151

2

CASE WHEN 쿼리 오류 문의

1

338

3

CASE문제풀이 질문

0

131

1

Customers Who Never Order 풀다가 Alias관련 질문사항

0

141

1

Average Population 질문

0

142

1

Revising Aggregations - The Count Function 질문

0

108

1

Average Population of Each Continent 에대해서 질문

0

199

3

w3schools 에서 쿼리 작성 질문

0

166

1

INNER JOIN 할 때 NULL 값이 안보일 수도 있나요?

0

332

1