월별 상품별 구매건수 구하기 0 4 133

by 쿼리냠냠 [MySQL] groupby [2018.04.13 11:33:03]


안녕하세요. DB고수님들.

개인적으로 학습용으로 테이블을 다루고있는데
궁금한사항이 있어 문의드립니다.

제목처럼 월별 상품별 구매건수를 구하는 것입니다. 

테이블 예시입니다.

A) 구매테이블 필드는 다음과 같습니다.
브랜드 | 상품명 | 판매날짜 | 수량 | 
 

B) 구매테이블의 필드테이터 
브랜드 | 상품명 | 판매날짜 | 수량 | 

A사 | 빼빼로 | 2018-04-02 | 1 |
A사 | 사이다 | 2018-03-01 | 2 |
A사 | 사이다 | 2018-03-11 | 2 |
A사 | 사이다 | 2018-03-21 | 2 |

B사 | 과자1   | 2018-03-01 | 1 |
B사 | 과자1   | 2018-03-10 | 10 |
B사 | 빼빼로 | 2018-04-01 | 3 |

C사 | 과자1   | 2018-03-01 | 1 |


*원하는결과값*
- 상품별 /브랜드별 / 월별 구매건수 구하기.

A사 | 사이다 | 2018-03 | 6 | 2018-04 | 1 | 
B사 | 과자1   | 2018-03 | 11 |  2018-04 | 3 |
C사 | 과자1   | 2018-03 | 1 |  2018-04 | 2 |
A사 | 빼빼로 | 2018-03 | 0 | | 2018-04 | 1 | 
B사 | 빼빼로 | 2018-03 | 0 | | 2018-04 | 3 |


Q.1) 상품별 월 판매건수를 구하는데,
        거기에 더해서 브랜드도 구분하여 쿼리를 짜고싶습니다. 

예를들어,
A사의 3월 빼빼로 판매건수는 100건 
B사의 3월 빼빼로 판매건수는 53건 
등.... 

판매건수를 통계하여 화면에 뿌려주는 기능을 만들어보고싶어서요.
( 그룹바이를 여러개 할 경우.... 뭔가 데이터가 원하는데로 나오지 않아 도움을 청합니다.)

긴글읽어주셔서 감사합니다.

좋은 하루 보내세요.
 

 

 

 

 

 

by 마농 [2018.04.13 12:19:41]
-- 판매날짜가 VARCHAR 타입인 경우
SELECT 브랜드
     , 상품명
     , SUBSTR(판매날짜, 1, 7) 판매년월
     , SUM(수량) 수량
  FROM 구매
 GROUP BY 브랜드, 상품명
     , SUBSTR(판매날짜, 1, 7)
;
-- 판매날짜가 DATE 타입인 경우
SELECT 브랜드
     , 상품명
     , DATE_FORMAT(판매날짜, '%Y-%m') 판매년월
     , SUM(수량) 수량
  FROM 구매
 GROUP BY 브랜드, 상품명
     , DATE_FORMAT(판매날짜, '%Y-%m')
;

 


by 쿼리냠냠 [2018.04.13 12:49:23]

친절한 답변 감사합니다.

저도 알려주신대까지 검색하면서 했습니다만.... 제가 원하는 쿼리는 서브쿼리(?)같은게 필요합니다.ㅠㅠ

월별 데이터가 데이터로 들어오는게 아니라 필드로 있어야합니다 ㅠ.

예를들어)

| 브랜드 | 상품명 | 2월 | 2월판매건수 | 3월 | 3월판매건수 | 4월 | 4월판매건수 |
| A 사 | 빼빼로 | 2018-02 | 74 | 2018-03 | 50 | 2018-04 | 20 |
| B 사 | 빼빼로 | 2018-02 | 30 | 2018-03 | 30 | 2018-04 | 30 |


이런식으로요...!

ㅠㅠ


by 마농 [2018.04.13 13:04:39]
SELECT 브랜드
     , 상품명
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '01' THEN 수량 END) m01
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '02' THEN 수량 END) m02
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '03' THEN 수량 END) m03
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '04' THEN 수량 END) m04
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '05' THEN 수량 END) m05
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '06' THEN 수량 END) m06
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '07' THEN 수량 END) m07
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '08' THEN 수량 END) m08
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '09' THEN 수량 END) m09
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '10' THEN 수량 END) m10
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '11' THEN 수량 END) m11
     , SUM(CASE WHEN SUBSTR(판매날짜, 6, 2) = '12' THEN 수량 END) m12
  FROM 구매
 WHERE 판매날짜 LIKE '2018%'
 GROUP BY 브랜드, 상품명
;

 


by 쿼리냠냠 [2018.04.13 18:10:19]

제가 원하는 쿼리를 뽑으려면 자꾸 뭐하나가 아쉬운상황이 생기는데 

매번 해결해주셔서 정말 감사드립니다..!

저도.... 열심히 노력해서..... 남을 도울 수 있는 능력까지 올리고싶습니다^^..

 

좋은 하루 보내세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입