본문 바로가기
IT/SQL

[SQL예문] 월별 / 일별 주문 수 추출하기 (feat. SUBSTRING)

by marketinkerbell 2022. 2. 25.
반응형

 

 

월별 주문 수 추출하기


우선, 주문관련 데이터가 누적되는 shop_order 테이블에 어떤 컬럼들이 있는지 살펴본다.

SELECT * FROM 주문테이블

여러 컬럼들 중

주문번호, 주문날짜 및 시간, 주문 상태

이 세 칼럼이 필요할 것 같다.

 




 

월별 주문 수 추출 쿼리문

 

 


SUBSTRING 함수 사용법👀

월별 주문수 구하기 위해
월별로 GROUP BY 가 필요!
날짜 및 시간 컬럼에서 yy-mm 까지만 잘라서 사용! (SUBSTRING 함수로)


SUBSTRING (od_receipt_time,1,7) AS "YY-MM"
ㄴ od_receipt_time 컬럼에서 1번째 문자열부터 7개까지만 사용하겠다.
이 컬럼명은 yy-mm 으로 명명 한다.


COUNT(od_id) AS od_count
ㄴ od_id 주문번호 몇개인지 카운팅하고, 이름은 od_count로 명명


WHERE od_receipt_time is NOT NULL
ㄴ od_receipt_time 주문시간 컬럼이 NULL 이 아닌 것만 보겠다.


AND od_receipt_time NOT LIKE '2022%'
ㄴ 주문일은 2021 까지만 보겠다.
( 2022년 2월에 쿼리문 돌린경우 이렇게 조건 걸어줘도 됨. 쿼리문 작성할 때가 2023년 이라면, 위 조건문 결과가 2022년 만 빼고 2022년 전, 2022년 후 데이터가 다 나올 것임. 이런 경우 BETWEEN으로 날짜 지정해줘야함)


GROUP BY SUBSTRING(od_receipt_time,1,7)
ㄴ 주문일 기준으로 GROUP BY


ORDER BY "YY-MM" DESC;
ㄴ 주문일 기준으로 내림차순 정렬




AWS Redshift 에서는 쿼리 결과 데이터를 간단한 차트로도 볼 수 있다.






일별 주문 수 추출하기



월별 주문수 구하는 방법과 비슷~~ 하다
SUBSTRING 으로 년,월,일 까지 자르고 그 컬럼으로 GROUP BY

 



WHERE od_status = '완료' -> 배송완료된 상태의 주문만

AND od_receipt_time BETWEEN '2018-01-01 00:00:00' AND '2018-12-31 23:59:59'
ㄴ 2018년 1년간의 데이터만 추출







( *참고 : 캡쳐화면은 AWS Redshift 화면이며 postgreSQL 기반입니다. )

 

 

 

 



유사한 글 >
https://devfairy.tistory.com/2?category=854309

 

[MySQL] DB에서 원하는 조건의 데이터 추출하기

안녕하세요 요즘 기업들에서 꼭 개발팀이 아니더라도 DB에 접속해서 필요한 데이터들 추출하여 사용하는 경우가 많더라구요. 해당 테이블 권한만 받아서요. 성과 데이터가 필요하기도 하고, 앞

devfairy.tistory.com






댓글