inflearn logo
강의

Course

Instructor

[A hundred words are not as good as seeing once] Advanced SQL for data analysis

Solving Subquery HackerRank Problems

Top Earners 문제관련 질문

Resolved

96

seoy68243

1 asked

0

안녕하세요, Top Earners 문제 관련 질문 있습니다.

저는 From절 서브쿼리를 사용해 보았는데

제 풀이에 어떤 오류가 있는지 알고 싶습니다.

제가 작성한 쿼리는 다음과 같습니다.

SELECT MAX(tmp.earnings), COUNT(tmp.name)
FROM (SELECT employee_id,name,months,salary,months*salary as earnings
      FROM Employee
      ) as tmp
GROUP BY earnings
ORDER BY earnings DESC
LIMIT 1

sql

Answer 2

0

jaemin

실행해 보니 오류 없이 잘 실행됩니다.
ORDER BY와 LIMIT을 사용해 풀어주셨는데, 이렇게 풀어도 문제는 없습니다.
강의에서 알려드린 풀이법이 더 일반적이니 같이 알아두시면 좋을 것 같아요.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. seoy68243님.

SQL 쿼리를 작성하시면서 발생한 문제에 대한 고민이 있으신 것 같습니다. 작성하신 쿼리를 함께 살펴보겠습니다.

  1. MAX(tmp.earnings): 현재 GROUP BY earnings로 인해 각 earnings 값마다 그룹이 형성되어 있습니다. 따라서, MAX(tmp.earnings)는 각 그룹 내에서 최대값을 반환하게 됩니다. 하지만, 쿼리의 의도는 각 그룹이 아닌 전체 데이터에서 최대 earnings 값을 가져오고자 하는 것일 수 있습니다.

  2. COUNT(tmp.name): COUNT(tmp.name)은 특정 earnings 값을 가진 레코드의 개수를 카운트합니다. 그러나 각 earnings에 대해 하나의 레코드만 존재할 가능성이 높기 때문에, 대부분 결과가 1이 될 것입니다.

  3. LIMIT 1: ORDER BY earnings DESCLIMIT 1이 작동하여 가장 높은 earnings 값을 가진 하나의 레코드만 선택되겠지만 쿼리의 목적과 맞는지는 다시 확인해볼 필요가 있습니다.

LIMIT 1GROUP BY의 조합은 주의 깊게 사용해야 합니다. 따라서 쿼리를 재검토하여 전체에서 가장 높은 earnings를 가진 직원의 데이터를 정확히 찾으려면 수정이 필요합니다. 아래와 같이 쿼리를 수정할 수 있습니다:

SELECT employee_id, name, MAX(earnings) as max_earnings
FROM (SELECT employee_id, name, months*salary as earnings
      FROM Employee) as tmp
GROUP BY employee_id, name
ORDER BY max_earnings DESC
LIMIT 1;

위 쿼리는 각 직원에 대해 가장 높은 earnings 값을 그룹화하여 정렬하고, 그 중 가장 높은 값을 가진 직원의 정보를 가져옵니다.

위 설명이 도움이 되길 바랍니다. 해당 문제에 대한 비슷한 질문과 답변이 도움될 수 있는 글을 아래에 추천드리니 참고하시면 좋을 것 같습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

순위 함수 연습 문제 - 스테디셀러 작가 찾기

0

85

1

문제 내용이 잘못된 것 같습니다.

0

58

2

서브쿼리 질문

0

59

2

[수업질문] 서브쿼리 > null데이터 avg사용 주의

0

72

1

서브쿼리는 언제 작성하는건가요?

0

68

1

안녕하세요 질문드립니다.

0

66

2

고급반 cheetsheet

0

148

2

196. Delete Duplicate Emails 좋은 코드 질문

0

141

1

a.id = 1과 b.id=1이 없어도 되는 이유

0

125

0

강의 플랫폼

0

198

3

리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요

0

205

2

ERD 읽는법에 추가 질문 있어요

0

249

1

lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답

0

355

2

사용자정의함수

0

230

1

이 문제 inner join이 이해가 안됩니다.

0

295

1

평균 함수 사용할 때 주의점과 해결법

0

259

1

196. subquery로 풀 때, 궁금한 점

0

382

2

쿼리성능 질문드립니다.

0

313

1

리트코드 highest department salary 문제

0

258

2

The report 문제 order by부분 질문

0

269

2

리트코드 서브쿼리 문제 질문

0

420

1

DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의

0

235

1

서브쿼리의 활용사례 및 조인관련질문

0

282

1

count(*)과 AS가 사용가능한절 TOP EARNERS문제

0

252

2