인프런 커뮤니티 질문&답변

김혜수님의 프로필 이미지

작성한 질문수

데이터 분석 SQL Fundamentals

이동평균 Analytic SQL 실습

with as로 정의되는 테이블 질문입니다.

24.07.09 13:13 작성

·

69

0

---1번 쿼리(오류)
with
temp_01
as(
	select b.order_date
	from order_items a
		join orders b on a.order_id = b.order_id
	group by b.order_date
	order by b.order_date
)
select order_date as ord_date
	, sum(amount) over (order by order_date) as daily_sum
from temp_01
-------------------------------------------------------------------------
---2번 쿼리(작동)
with
temp_01
as(
	select b.order_date
		, sum(amount) as sum_amount
	from order_items a
		join orders b on a.order_id = b.order_id
	group by b.order_date
	order by b.order_date
)
select order_date as ord_date
	, sum(sum_amount) over (order by order_date) as daily_sum
from temp_01

안녕하세요 선생님. 제가 쿼리를 혼자 작성해보다가 막히는 점이 있어서 질문 드립니다.

쿼리를 다음과 같이 작성했는데 첫 번째 쿼리는 오류가 나고 두 번째 쿼리는 작동했습니다. 두 쿼리의 다른 점은 두 번째 쿼리에서 with 절에 sum(amount) as sum_amount로 amount를 정의한 것입니다.

이전에도 with 절로 temp_01을 종종 정의해서 쿼리를 작성했는데 아직 헷갈립니다.

with 절로 temp_01을 만들 때, order_items나 orders에 포함되는 컬럼이라면 굳이 모두 with절의 select에 입력하지 않아도, 그 다음 select 절에 입력해 출력할 수 있다고 생각했습니다. 그래서 1번 쿼리처럼 작성했는데 오류가 나서 헷갈립니다.

읽어주셔서 감사합니다.

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

2024. 07. 09. 15:22

안녕하십니까,

with 절로 temp_01을 만들 때, order_items나 orders에 포함되는 컬럼이라면 굳이 모두 with절의 select에 입력하지 않아도, 그 다음 select 절에 입력해 출력할 수 있다고 생각했습니다.

=> 아닙니다. with 절의 select에 나열되어 있어야 그 다음 select 절에 입력해서 출력할 수 있습니다.

 

감사합니다.