24.07.09 13:13 작성
·
56
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 절에 입력해서 출력할 수 있습니다.
감사합니다.