inflearn logo
강의

Course

Instructor

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

Solution to problem 2

set 1 - 2번 문제풀이

258

lky36853177

1 asked

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

having total_score !=0 이라고 group by 결과값을 필터링해주셨는데

실행 순서상

서브쿼리 ->

메인쿼리(from/join -> (where) -> groupby -> having ->select -> orderby -> limit)

이지 않나요?

그런데 select 에 있는 total_score를 having에서 쓸 수 있는 이유가 궁금합니다.

sql

Answer 1

0

communityai8509

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

코린이님 질문주신 SQL의 실행 순서와 관련한 내용에 대해 답변드리겠습니다.

말씀하신 대로 일반적으로 SQL 쿼리의 실행 순서는 서브쿼리를 포함하여 다음과 같습니다:
1. FROM / JOIN
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER BY
7. LIMIT

그런데 여기서 중요한 점은 SELECT 단계에서 정의된 별칭(alias)이나, 계산된 컬럼(expression)은 HAVING 절에서 사용할 수 있다는 것입니다. 이는 HAVING 절이 GROUP BY 이후에 수행되기 때문입니다.

예를 들어, SELECT 절에서 total_score라는 이름으로 합계나 평균 같은 집계 함수를 통해 값을 계산했다고 하면, 이미 그룹화된 후에 나오는 결과값이기 때문에 HAVING 절에서 해당 값에 기반하여 필터링을 할 수 있습니다. 간단히 말해, HAVING은 그룹화된 결과에 대한 조건을 명시할 때 사용하는 것이며, 이때 GROUP BY에 의해 그룹화된 후 컬럼에 대한 집계함수를 적용한 결과를 사용할 수 있기 때문입니다.

따라서 HAVING 절에서는 GROUP BY로 인해 그룹화된 이후에 만들어진 total_score 같은 집계 결과를 사용하여 필터링을 할 수 있는 것입니다. SELECT 절에서 정의한 집계 컬럼을 HAVING에서 사용하는 것은 SQL의 정상적인 동작 중 하나입니다.

질문에 도움이 되셨길 바라며, 학습에 있어서 더 궁금한 점이 있다면 언제든지 질문해주시기 바랍니다.

강의기간 연장문의

0

96

2

HackerRank : Weather Observation Station 11 문제풀이

0

116

1

SET4의 3번 자리바꾸기 문제 다른 풀이

0

185

1

set 3의 3번 문제- 데이터의 개수가 짝수일 때 질문

0

263

2

세트2번 Binary Tree Nodes 질문입니다!

0

225

2

고급문제풀이set1 3번 문제

0

249

2

고급문제풀이 3번 INNERJOIN 활용시 오류

0

269

1

회사일하다 보니까 다 못듣고 수강기간이 다끝나가는데 .,. 수강기간 연장은 어떻게 할수 있나요?ㅜㅜ

0

320

1

[Weather 20 ] 2번째 쿼리도 따라 했는데 왜 다 실패일까요?

0

372

1

[Weather 20] 따라 했는데 왜 작동 안해요?

0

274

1

weather-20 왜 작동 안하는건가요?

0

226

1

Ollivander's Inventory 윈도우 함수 min() over

0

310

1

LeetCode 626. Exchange Seats 리트코드 제출 오류

0

506

2

섹션4에 3번 문제풀이 질문

0

376

2

SQL Project Planning 풀이 관련 문의

0

579

2

섹션 1번 4번문제 풀이

1

283

1

섹션1 2번 문제풀이 강의

0

301

1

set2 - 1 같게 작성했는데 답이 이상합니다.

0

285

1

max함수를 써서 풀지는 못하나요?

0

297

1

윈도우 함수를 이용해서 풀고 싶어서 써봤습니다. 더 간단하게 줄일 수 있을까요?

0

257

1

(Hacker Rank)Binary Tree 문제 질문

0

325

1

쿼리 두개로 작성하고 싶지 않아 하나로 어떻게든 만들어 봤습니다.

0

292

1

이런 풀이는 왜 안되는지 궁금해요

0

273

1

소수점 이하 숫자가 안나옵니다 ㅠㅠ

0

323

2