inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

GROUP BY 해커랭크 문제풀이

top earners

381

mmyungjjin

작성한 질문수 5

0

top earners 문제를 풀다가

count(earnings)가 아닌 count(*)로 작성하는 점에

의문이 생겨 기존 질의 응답을 쭉 읽었습니다!

 

보다보니 쿼리 실행 순서 때문이라는 답글을 보았는데요.

 

이 문제 풀이에서 쿼리 실행 순서가

FROM -> GROUP BY  -> SELECT -> ORDER BY -> LIMIT 순 이라고 하셨는데,

 

1) 그럼 group by 가 실행될 때 earnings는 아직 정의되지 않았지만 뒤의 select에서 정의가 되었기 때문에 오류없이 넘어가는 건가요?

 

2) group by 로 인해 earnings 칼럼 기준으로 정렬하기 때문에 count(*)을 쓰면 동일한 earnings끼리만 묶이는 원리(?)라고 이해하면 되나요?

sql

답변 1

0

데이터리안

안녕하세요.

1) 실행 순서는 적어주신 순서가 일반적인 순서가 맞습니다. 그래서 몇 개 DB에서는 SELECT 에서 작성한 Alias 를 GROUP BY 에서 사용하실 수 없어요. 하지만 DB 마다 SELECT 절에서 사용한 Alias 를 GROUP BY 에서 사용할 수 있는지는 약간 다른데요. MySQL에서는 사용할 수 있습니다. SQL 이라는 공통의 규약이 있지만, 어떤 DBMS를 사용하느냐에 따라 기능의 차이가 약간 있다고 이해하시면 될 것 같아요.

관련된 이야기가 오간 stackoverflow 타래가 있어서 붙입니다. sql using select alias in group by 라고 구글에 검색해서 찾았어요.

https://stackoverflow.com/questions/3841295/sql-using-alias-in-group-by

2) 네 맞습니다!

좋은 질문 남겨주셔서 감사합니다.

리트코드 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

97

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

203

2

CustomerID가 중복되서 나타나요

0

234

3

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

0

142

2

CASE WHEN 쿼리 오류 문의

1

325

3

CASE문제풀이 질문

0

125

1

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

0

137

1

Average Population 질문

0

129

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