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

Busantist님의 프로필 이미지
Busantist

작성한 질문수

데이터 분석 SQL Fundamentals

이동평균 Analytic SQL 실습_ 3일 이동 평균 매출 예제 쿼리 질문

작성

·

232

0

안녕하세요. 권철민 선생님
SQL Fundamentals 강의 내 이동평균 Analytic SQL 실습 편의 3일 이동 평균 매출 예제 쿼리에 대해 질문이 있습니다.

order_date를 date_trunc 함수 활용하여 group by 하셨는데

select date_trunc('day',b.order_date)::date as order_dy , sum(a.amount)

from order_items as a 

inner join orders as b on a.order_id = b.order_id 

group by date_trunc('day',b.order_date)::date

order by 1

아래 쿼리처럼 곧바로 order_date로 group by 하는 것과 어떤 차이점이 있을까요?
표면적으로 보여지는 결과값은 같아 보여서 왜 date_trunc 함수를 사용했는지가 궁금합니다.

select order_date , sum(a.amount)

from order_items as a 

inner join orders as b on a.order_id = b.order_id 

group by 1

order by 1

답변 1

1

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

안녕하십니까, 

지금 실습 테이블이 orders에서 order_date가 일자로 들어가 있습니다. 

하지만 일반적으로 orders와 같은 주문 테이블은 주문 일자가 아니라 시간을 포함한 주문 일시가 주로 들어가 있습니다. 

때문에 명확하게 일자별 매출을 구하기 위해서 order_date가 일시인 경우에도 SQL이 잘 동작할 수 있도록 해당 SQL을 작성하였습니다. 

감사합니다. 

Busantist님의 프로필 이미지
Busantist
질문자

범용적으로 활용할 수 있게 data_trunc 함수를 사용했다는 뜻으로 이해하면 되겠죠? 빠른 답변 감사합니다!

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

네, 맞습니다 ^^

Busantist님의 프로필 이미지
Busantist

작성한 질문수

질문하기