inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

해커랭크 Top Earners 문제 질문

263

ljsuu96331

작성한 질문수 3

1

해커랭크 Top Earners 문제 질문입니다!

 

강의에서 풀어주신 코드인데요.

SELECT salary * months AS earnings, COUNT(*)

FROM Employee

GROUP BY earnings

ORDER BY earnings DESC

LIMIT 1;

 

이 코드가 안되는 이유가 궁금합니다!

SELECT MAX(salary * months AS earnings), COUNT(*)

FROM Employee

GROUP BY earnings;

 

sql

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. ljsuu96331님, 질문 주셔서 감사합니다.

SQL 문제를 해결하는 과정에서 발생한 문제에 대해 궁금증을 해소해 드리겠습니다.

GROUP BY 절은 데이터를 특정 기준으로 그룹화할 때 사용되며, 각 그룹에 대한 집계함수의 결과가 출력됩니다. 그룹화를 할 때 GROUP BY 절에 사용하는 열이나 표현식은 SELECT 목록에있는 것이어야 합니다.

질문하신 코드의 두 번째 쿼리에서 MAXCOUNT는 집계함수를 사용하는데, 여기서 GROUP BY earnings는 의도하신 것과 다른 방식으로 사용되고 있습니다. earnings라는 별칭은 선택한 결과집합의 일부로서 제공되어야 하지만, 여기에서는 GROUP BY 절에 있어서 문제가 발생합니다.

해당 쿼리는 COUNT(*)로 각 그룹에 속하는 행의 수를 구하려고 시도하고 있는데, earnings에 대해서 그룹화를 하게 되면 결과가 예상과 다를 수 있습니다. 또한, MAX 함수는 해당 그룹 전체에서 가장 큰 값을 찾는 것이 목적이라 GROUP BY 절 없이 독립적으로 사용되어야 합니다.

그래서 아래와 같은 쿼리가 올바른 접근 방식일 수 있습니다.

SELECT MAX(salary * months) AS max_earnings, COUNT(*)
FROM Employee;

이 쿼리는 MAX 집계함수를 사용하여 모든 Employee 테이블의 행에 대해 salary * months의 최대값을 계산하고, COUNT(*)를 통해 총 행의 수를 구합니다. 이렇게 하면 가장 높은 수입(earnings)과 해당 수입을 가진 직원의 수를 구할 수 있습니다. GROUP BY를 사용하지 않아도 원하는 결과를 얻을 수 있습니다.

기타 문의사항이 있으시면 언제든지 질문해주세요.

리트코드 1280. Students and Examinations

0

75

3

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

0

89

2

African Cities 문제관련 질문

0

54

1

SQL 코딩테스트 질문

0

206

1

HACKER RANK에서 문제찾기

0

98

2

강의 자료 다운로드

0

90

2

Asian population 문제가 없어요

0

77

2

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

0

68

2

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

0

79

2

rising temperature 문제 질문

0

98

2

해커랭크 TOP EARNERS 문제 질문

0

99

1

ON 뒤에 질문

0

95

2

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

0

196

3

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

1

204

2

CustomerID가 중복되서 나타나요

0

234

3

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

0

144

2

CASE WHEN 쿼리 오류 문의

1

325

3

CASE문제풀이 질문

0

125

1

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

0

138

1

Average Population 질문

0

130

1

Revising Aggregations - The Count Function 질문

0

104

1

Average Population of Each Continent 에대해서 질문

0

193

3

w3schools 에서 쿼리 작성 질문

0

159

1

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

0

329

1