set 1 - 2번 문제풀이
258
1 asked
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
having total_score !=0 이라고 group by 결과값을 필터링해주셨는데
실행 순서상
서브쿼리 ->
메인쿼리(from/join -> (where) -> groupby -> having ->select -> orderby -> limit)
이지 않나요?
그런데 select 에 있는 total_score를 having에서 쓸 수 있는 이유가 궁금합니다.
Answer 1
0
안녕하세요, 인프런 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

