Search

5-6. 여러 컬럼의 GROUP BY

여러 컬럼의 GROUP BY

GROUP BY에 여러 컬럼(항목)을 정의할 수 있다.
-- [SQL-5-6-1] GROUP BY 처리전 SQL SELECT T1.ItemId ,T1.ItemNm ,T1.ItemSizeCd ,T1.HotColdCd FROM startdb.Item T1 WHERE T1.ItemCat != 'COF' AND T1.LaunchDt = STR_TO_DATE('20190101','%Y%m%d') ORDER BY T1.ItemSizeCd ,T1.HotColdCd; -- GROUP BY 처리전 결과 ItemId ItemNm ItemSizeCd HotColdCd ------ ------------------- ---------- --------- HCHB Hot Chocolate(B) BIG HOT LEMR Lemonade(R) REG COLD BMFR Blueberry Muffin(R) REG COLD CMFR Chocolate Muffin(R) REG COLD HCHR Hot Chocolate(R) REG HOT BGLR Bagel(R) REG HOT -- [SQL-5-6-2] ItemSizeCd, HotColdCd별 GROUP BY SELECT T1.ItemSizeCd ,T1.HotColdCd ,COUNT(*) ItemCnt FROM startdb.Item T1 WHERE T1.ItemCat !='COF' GROUP BY T1.ItemSizeCd ,T1.HotColdCd ORDER BY T1.ItemSizeCd ,T1.HotColdCd; -- ItemSizeCd, HotColdCd별 GROUP BY 처리후 결과 ItemSizeCd HotColdCd ItemCnt ---------- --------- ------- BIG HOT 1 REG COLD 3 REG HOT 2
SQL
복사
아래는 주문(Ord) 데이터를 주문년월(OrdYm)별 회원ID별 GROUP BY 처리한 SQL이다.
-- [SQL-5-6-3] SELECT DATE_FORMAT(T1.OrdDtm,'%Y%m') OrdYm ,T1.MemberId ,SUM(T1.OrdAmt) SumOrdAmt FROM startdb.Ord T1 WHERE T1.OrdDtm >= STR_TO_DATE('20220101','%Y%m%d') AND T1.OrdDtm < STR_TO_DATE('20220401','%Y%m%d') AND T1.MemberId IN ('M0207','M0208','M0209') GROUP BY DATE_FORMAT(T1.OrdDtm,'%Y%m') ,T1.MemberId ORDER BY DATE_FORMAT(T1.OrdDtm,'%Y%m') ,SumOrdAmt DESC; OrdYm MemberId SumOrdAmt ------ -------- --------- 202201 M0207 34000.000 202201 M0209 16000.000 202201 M0208 8000.000 202202 M0209 15000.000 202202 M0207 14000.000 202202 M0208 11000.000 202203 M0209 23500.000 202203 M0207 13500.000 202203 M0208 11000.000
SQL
복사

BOOSTER QUIZ

BOOSTER QUIZ ERD

BOOSTER QUIZ 5-6-1

S213과 S214 매장의 2022년 1월 5일부터 2022년 1월 15일까지의 주문을 매장별, 주문일자별로 주문건수를 집계해 보여주세요.
대상 테이블: 주문(Ord)
조회 조건: ShopId가 S213이거나 S214이면서, OrdDtm이 2022년 1월5일 이상, 2022년 1월 15일 이하인 데이터.
조회 컬럼: ShopId, 주문일자, OrdCnt
추가 조건
주문일자는 OrdDtm을 DATE_FORMAT을 사용해 YYYYMMDD 형태의 문자열로 변환한 항ahr
ShopId, 주문일자별로 GROUP BY 처리하시오.
OrdCnt는 ShopId, 주문일자별 데이터 건수
정렬 기준: ShopId로 오름차순 한 후에 주문일자로 오름차순하시오.
ShopID 주문일자 OrdCnt ------ -------- ------ S213 20220105 3 S213 20220111 3 S214 20220105 3 S214 20220111 3
SQL
복사

BOOSTER QUIZ 5-6-2

S213과 S214 매장의 2022년 1월 주문을, 매장별 제조완료분수별로 카운트해주세요. 매장별로 제조완료분수가 주로 몇 분대인지 파악하려고요.
대상 테이블: 주문(Ord)
조회 조건: ShopId가 S213이거나 S214이면서, OrdDtm이 2022년 1월인 데이터.
조회 컬럼: ShopId, 제조완료분수, OrdCnt
추가 조건
제조완료분수는 OrdDtm부터 PrepareCmpDtm까지 걸린 분(MINUTE)수
TIMESTAMPDIFF를 사용해 처리.
ShopId, 제조완료분수 별로 GROUP BY 처리하시오.
OrdCnt는 ShopId, 제조완료분수 별 데이터 건수
정렬 기준: ShopId로 오름차순한 후에 제조완료분수로 오름차순하시오.
ShopID 제조완료분수 OrdCnt ------ ------------ ------ S213 5 2 S213 12 8 S213 14 4 S214 9 8 S214 11 4
SQL
복사
Upper: 5. GROUP BY