BOOSTER QUIZ 7-1-1
논리 ERD를 살펴보고 ( A ) 에 들어갈 내용을 채우시오.
•
( A ) 테이블은 매장 테이블을 참조한다.
•
그리고 ( A ) 테이블은 회원 테이블도 참조한다.
•
바꿔 말하면, 매장 테이블과 회원 테이블은 ( A ) 테이블에 참조된다는 뜻이다.
•
이 말은, ( A ) 테이블에 발생되는 ( A ) 데이터는 매장과 회원에 존재해야 한다는 뜻이다.
•
경우에 따라서는 ( A ) 테이블에 매장과 회원을 NULL 값으로 발생시키는 건 가능할 수 있다.
BOOSTER QUIZ 7-1-2
물리 ERD를 살펴보고 ( A ), ( B ), (C) 에 들어갈 내용을 채우시오.
•
( A ) 테이블은 Shop과 Member를 참조한다.
•
참조한다는 것은, Shop 테이블의 ( B ) 인 ShopId와 Member 테이블의 ( B )인 MemberId를
( A ) 테이블에서 ( C )로 사용하고 있다는 뜻이기도 하다.
BOOSTER QUIZ 7-1-3
논리 ERD를 살펴보고 ( A ), ( B ), ( C ) 에 들어갈 내용을 채우시오.
•
( A ) 테이블은 주문 테이블을 참조하고 있다.
•
( A ) 테이블의 PK는 주문번호와 ( B )다.
◦
이 뜻은, 하나의 주문에 여러 개의 상세 내역이 있을 수 있다는 뜻이다.
•
( A ) 테이블은 주문 테이블과 함께 ( C ) 테이블도 참조하고 있다.
•
( C ) 테이블의 PK 인 상품ID가 ( A ) 테이블에 일반 컬럼으로 존재한다.
•
정리하면, 주문에 대해 어떤 상품이 주문 되었는지 알려면 ( A ) 테이블을 확인해야 한다.
•
그리고 하나의 주문에는 여러 ( C )의 주문이 가능하다.
BOOSTER QUIZ 7-1-4
물리 ERD를 살펴보고 괄호안에 내용 중 적절한 것을 선택하시오.
•
Ord 테이블은 OrdDet 테이블에 참조 ( 된다. / 한다. )
◦
이는 Ord 테이블의 PK 인 OrdNo가 OrdDet 테이블에 ( 비사용 / 사용 ) 되고 있다는 뜻이다.
•
만약에 OrdNo가 100 번인 신규 주문이 저장되려면, ( Ord / OrdDet ) 에 먼저 저장되어야 한다.
◦
그래야만 ( Ord / OrdDet ) 에도 OrdNo 100 번을 저장할 수 있다.
•
OrdDet 테이블의 PK 는 OrdNo와 OrdDetNo로 구성되어 있다.
◦
이는 OrdNo 별로 여러 건의 상세 데이터를 저장할 수 ( 있다 / 없다 ) 는 뜻이다.
◦
그리고 OrdDet 테이블은 Item 테이블의 ItemId를 참조 ( 된다. / 한다. )
•
Ord, OrdDet, Item 관계를 종합해보면 발생된 주문 속한 상품 정보는 ( Ord / OrdDet / Item ) 에 관리되고 있다.
BOOSTER QUIZ 7-2-1
(SQL-1)과 (SQL-2)의 각각의 결과를 확인하고, (SQL-3)을 실행했다고 가정하고 질문에 답하시오.
-- (SQL-1)
SELECT T1.MemberId ,T1.NickNm
FROM startdb.Member T1
WHERE T1.MemberID IN ('M0001','M0002');
MemberId NickNm
-------- ------
M0001 Air
M0002 Apple
-- (SQL-2)
SELECT T2.OrdNo ,T2.OrdDtm ,T2.MemberId
FROM startdb.Ord T2
WHERE T2.MemberID IN ('M0001','M0002')
AND T2.OrdDtm >= STR_TO_DATE('20191201','%Y%m%d')
AND T2.OrdDtm < STR_TO_DATE('20191203','%Y%m%d');
OrdNo OrdDtm MemberId
----- ------------------- --------
391 2019-12-01 08:00:00 M0001
392 2019-12-02 08:00:00 M0001
397 2019-12-02 09:00:00 M0002
-- (SQL-3)
SELECT T1.MemberId ,T1.NickNm ,T2.OrdNo ,T2.OrdDtm ,T2.MemberId
FROM startdb.Member T1
INNER JOIN startdb.Ord T2
ON (T1.MemberId = T2.MemberId)
WHERE T1.MemberID IN ('M0001','M0002')
AND T2.MemberID IN ('M0001','M0002')
AND T2.OrdDtm >= STR_TO_DATE('20191201','%Y%m%d')
AND T2.OrdDtm < STR_TO_DATE('20191203','%Y%m%d')
ORDER BY T1.MemberId ,T2.OrdNo;
SQL
복사
•
(SQL-3)은 (SQL-1)과 (SQL-2)를 MemberId로 이너조인한 SQL이다.
•
(SQL-3)을 실행하면 NickNm이 Air인 데이터는 몇 건인가?
•
(SQL-3)을 실행하면 NickNm이 Apple인 데이터는 몇 건인가?
BOOSTER QUIZ 7-2-2
(SQL-1)과 (SQL-2)의 각각의 결과를 확인하고, (SQL-3)을 실행했다고 가정하고 질문에 답하시오.
-- (SQL-1)
SELECT T1.MemberId ,T1.NickNm ,T1.MemberGd ,T1.JoinDtm
FROM startdb.Member T1
WHERE T1.JoinDtm = STR_TO_DATE('20220421','%Y%m%d')
AND T1.MemberGd = 'SILV'
ORDER BY T1.MemberId;
MemberId NickNm MemberGd JoinDtm
-------- ------- -------- -------------------
M3084 River61 SILV 2022-04-21 00:00:00
M3170 Lake63 SILV 2022-04-21 00:00:00
M3362 Fire67 SILV 2022-04-21 00:00:00
M3367 Gold67 SILV 2022-04-21 00:00:00
-- (SQL-2)
SELECT T2.OrdNo ,T2.OrdDtm ,T2.MemberId, T2.ShopId ,T2.OrdAmt
FROM startdb.Ord T2
WHERE T2.OrdDtm >= STR_TO_DATE('20221201','%Y%m%d')
AND T2.OrdDtm < STR_TO_DATE('20230101','%Y%m%d')
AND T2.ShopId = 'S167'
AND T2.OrdAmt >= 10000
ORDER BY T2.OrdNo;
OrdNo OrdDtm MemberId ShopId OrdAmt
----- ------------------- -------- ------ ---------
57250 2022-12-23 09:00:00 M3170 S167 12500.000
66490 2022-12-30 15:00:00 M9408 S167 12500.000
-- (SQL-3): (SQL-1)과 (SQL-2)를 이너 조인한 SQL이다.
SELECT T1.MemberId ,T1.NickNm ,T1.MemberGd ,T1.JoinDtm
,T2.OrdNo ,T2.OrdDtm ,T2.MemberId, T2.ShopId ,T2.OrdAmt
FROM startdb.Member T1
INNER JOIN startdb.Ord T2
ON (T2.MemberId = T1.MemberId)
WHERE T1.JoinDtm = STR_TO_DATE('20220421','%Y%m%d')
AND T1.MemberGd = 'SILV'
AND T2.OrdDtm >= STR_TO_DATE('20221201','%Y%m%d')
AND T2.OrdDtm < STR_TO_DATE('20230101','%Y%m%d')
AND T2.ShopId = 'S167'
AND T2.OrdAmt >= 10000
ORDER BY T1.MemberId;
SQL
복사
•
(SQL-3)은 (SQL-1)과 (SQL-2)를 MemberId로 이너조인한 SQL이다.
•
(SQL-3)을 실행하면 버려지는 Member 테이블의 MemberId는?
•
(SQL-3)을 실행하면 버려지는 Ord 테이블의 OrdNo는?
BOOSTER QUIZ 7-3-1
S062 매장의 2023년 3월 31일 7시부터 12시 사이 주문과 주문 상세 내역을 출력해주세요.
•
대상 테이블: 주문(Ord)과 주문상세(OrdDet)
•
조회 조건: ShopId가 S062만, OrdDtm이 2023년 3월 31일 07시부터 OrdDtm이 2023년 3월 31일 12시 이전
•
조회 컬럼: OrdNo, OrdDtm, ShopId, OrdDetNo, ItemId, OrdQty, SalePrc
OrdNo OrdDtm ShopId OrdDetNo ItemId OrdQty SalePrc
----- ------------------- ------ -------- ------ ------ --------
89925 2023-03-31 09:00:00 S062 1 BMFR 1 3500.000
90137 2023-03-31 11:00:00 S062 1 CLR 1 5000.000
SQL
복사
풀이
BOOSTER QUIZ 7-3-2
2023년 1월 주문 중에, 아메리카노빅사이즈 관련 주문 정보를 출력해주세요.
•
대상 테이블: 주문(Ord)과 주문상세(OrdDet)
•
조회 조건: OrdDtm이 2023년 1월이면서, ItemId가 AMB(아메리카노빅사이즈)인 데이터
•
조회 컬럼: OrdNo, OrdDtm, ShopId, OrdDetNo, ItemId, OrdQty, SalePrc
OrdNo OrdDtm ShopId OrdDetNo ItemId OrdQty SalePrc
----- ------------------- ------ -------- ------ ------ --------
67284 2023-01-01 20:30:00 S200 1 AMB 1 4500.000
67298 2023-01-02 09:30:00 S217 1 AMB 1 4500.000
67312 2023-01-02 10:00:00 S003 1 AMB 1 4500.000
67326 2023-01-02 10:00:00 S001 1 AMB 1 4500.000
67340 2023-01-02 10:00:00 S226 1 AMB 1 4500.000
67353 2023-01-02 10:00:00 S025 2 AMB 1 4500.000
… 생략 …
SQL
복사
풀이
BOOSTER QUIZ 7-3-3
주문번호 91810에 포함된 주문 상세 내역을 보여주세요.
•
대상 테이블: 주문상세(OrdDet)와 상품(Item)
•
조회 조건: OrdNo가 91810인 데이터
•
조회 컬럼: OrdNo, OrdDetNo, OrdQty, SalePrc, ItemId, ItemNm
OrdNo OrdDetNo OrdQty SalePrc ItemId ItemNm
----- -------- ------ -------- ------ -----------------
91810 1 1 5000.000 ICLR 아이스카페라떼(R)
91810 2 1 4500.000 AMR 아메리카노(R)
91810 3 1 4500.000 AMR 아메리카노(R)
SQL
복사
풀이
BOOSTER QUIZ 7-5-1
2022년 1월 주문을 매장운영유형별로 금액을 집계해 주세요.
•
대상 테이블: 매장(Shop)과 주문(Ord)
•
조회 조건: OrdDtm이 2022년 1월인 데이터
•
조회 컬럼: ShopOperTp, OrdAmtSum
•
추가 조건
◦
ShopOperTp별 GROUP BY 처리합니다.
◦
OrdAmtSum은 ShopOperTp별 SUM 처리한 OrdAmt입니다.
ShopOperTp OrdAmtSum
---------- -----------
DIST 991500.000
DRCT 744000.000
FLAG 2753000.000
SQL
복사
풀이
BOOSTER QUIZ 7-5-2
폐점한 매장의 매장운영유형별 주문년도별 주문건수를 구해주세요.
•
대상 테이블: 매장(Shop)과 주문(Ord)
•
조회 조건: ShopSt가 CLSD인 매장의 모든 주문 데이터
•
조회 컬럼: ShopOperTp, OrdYear, OrdCnt
•
추가 조건
◦
OrdYear는 OrdDtm 컬럼에 DATE_FORMAT을 사용해 년도만 추출한 항목입니다.
◦
ShopOperTp, OrdYear별 GROUP BY 처리합니다.
◦
OrdCnt는 ShopOperTp, OrdYear별 데이터 건수입니다.
•
정렬 기준: ShopOperTp로 오름차순후, OrdYear로 오름차순 정렬하시오.
ShopOperTp OrdYear OrdCnt
---------- ----- ------
DIST 2019 3
DIST 2020 84
DIST 2021 106
DIST 2022 149
DRCT 2019 7
DRCT 2020 192
DRCT 2021 288
DRCT 2022 308
SQL
복사
풀이
BOOSTER QUIZ 7-5-3
ShopStartYmd가 20180405인 매장에 대해, 매장별 2019년 12월 23일의 주문금액합계를 구하시오. 매장명칭과 매장크기, 매장크기1m2당 주문금액합계도 출력하시오.
•
대상 테이블: 매장(Shop)과 주문(Ord)
•
조회 조건
◦
Shop의 ShopStartYmd가 20180405
◦
Ord의 OrdDtm이 2019년 12월 23일
•
조회 컬럼: ShopId, ShopNm, ShopSize, SumOrdAmt, AmtPerSize
•
추가 조건
◦
ShopId별 GROUP BY 처리하시오.
◦
SumOrdAmt는 Ord의 OrdAmt를 SUM 처리한 값이다.
◦
AmtPerSize는 매장크기1m2당 주문금액합계로서, SumOrdAmt를 ShopSize로 나눈 값이다.
•
정렬 기준: ShopSize로 내림차순
ShopID ShopNm ShopSize SumOrdAmt AmtPerSize
------ --------------- -------- --------- ----------
S047 San Antonio-3rd 119 8000.000 67.23
S019 Denver-1st 63 17000.000 269.84
S005 Phoenix-1st 30 24000.000 800.00
SQL
복사
풀이
BOOSTER QUIZ 7-7-1
주문번호 1번(OrdNo=1)에 대한 매장, 회원, 상품, 주문수량등 모든 정보를 보여주세요.
•
대상 테이블: 매장(Shop), 회원(Member), 주문(Ord), 주문상세(OrdDet), 상품(Item)
•
조회 조건: OrdNo가 1인 데이터
•
조회 컬럼: OrdNo, OrdDetm, ShopId, ShopNm, MemberId, NickNm, OrdDetNo, OrdQty, ItemId, ItemNm
OrdNo OrdDtm ShopId ShopNm MemberId NickNm OrdDetNo OrdQty ItemId ItemNm
----- ------------------- ------ --------------- -------- ------ -------- ------ ------ -----------------
1 2019-05-04 14:00:00 S047 San Antonio-3rd M0318 Green6 1 1 AMR Americano(R)
1 2019-05-04 14:00:00 S047 San Antonio-3rd M0318 Green6 2 1 IAMB Iced Americano(B)
SQL
복사
풀이
BOOSTER QUIZ 7-7-2
직영점이면서 매장면적이 100이하이고 플래티넘 회원에 대한 2022년 12월 24일의 주문을 조회해주세요. 주문, 매장, 회원, 주문상세 등의 모든 정보를 보여주세요.
•
대상 테이블: 매장(Shop), 회원(Member), 주문(Ord), 주문상세(OrdDet), 상품(Item)
•
조회 조건
◦
ShopOperTp가 DRCT(직영점)이고, ShopSzie가 100 이하이면서
◦
MemberGd가 PLAT이고,
◦
OrdDtm이 2022년 12월 24일인 데이터
•
조회 컬럼
◦
OrdNo, OrdDtm, ShopId, ShopNm, ShopOperTp, ShopSize, OrdDetNo, OrdQty, ItemId, ItemNm
•
정렬 기준: OrdNo로 오름차순 후, OrdDetNo로 오름차순하시오.
OrdNo OrdDtm ShopId ShopNm ShopOperTp ShopSize OrdDetNo OrdQty ItemId ItemNm
----- ------------------- ------ ----------------- ---------- -------- -------- ------ ------ -------------------
60163 2022-12-24 10:00:00 S254 Columbus-13th DRCT 93 1 1 CLR Cafe Latte(R)
60176 2022-12-24 10:00:00 S249 Dallas-13th DRCT 83 1 1 CLB Cafe Latte(B)
60202 2022-12-24 10:30:00 S245 Phoenix-13th DRCT 75 1 1 BGLR Bagel(R)
60205 2022-12-24 10:30:00 S240 Washington-12th DRCT 65 1 1 CLR Cafe Latte(R)
60205 2022-12-24 10:30:00 S240 Washington-12th DRCT 65 2 1 HCHB Hot Chocolate(B)
...생략...
SQL
복사
풀이
BOOSTER QUIZ 7-7-3
[BOOSTER QUIZ 7-7-2]에서 구한 내용을 사용해 ItemId별로 주문수량 합계를 구하시오.
•
정렬 기준: 주문수량합계로 내림차순, ItemId로 오름차순 조회하시오.
ItemId ItemNm 주문수량합계
------ ------------------- ------------
CLR Cafe Latte(R) 7
HCHR Hot Chocolate(R) 5
BGLR Bagel(R) 4
CLB Cafe Latte(B) 4
HCHB Hot Chocolate(B) 4
LEMR Lemonade(R) 4
BMFR Blueberry Muffin(R) 3
AMR Americano(R) 1
CMFR Chocolate Muffin(R) 1
IAMB Iced Americano(B) 1
ICLB Iced Cafe Latte(B) 1
ICLR Iced Cafe Latte(R) 1
SQL
복사
풀이
BOOSTER QUIZ 7-8-1
‘M9269’ 회원의 2024년 1월 5일 주문 정보를 보여주세요. 어떤 상품을 주문했는지도 보여주세요. 주문 시점의 상품 가격에 대해 상품가격이력(ItemPricHist) 테이블을 사용해 보여주세요.
•
대상 테이블: 회원(Member), 주문(Ord), 주문상세(OrdDet), 상품(Item), 상품가격이력(ItemPrcHist)
•
조회 조건
◦
Member: MemberId가 M9269인 회원
◦
Ord: OrdDtm이 2024년 1월 5일
•
조회 컬럼: MemberId ,NicNm, JoinDtm, OrdDtm, OrdQty, ItemId, ItemNm, FromDt(가격시작일자), SalePrc
•
추가 조건: FromDt와 SalePrc는 Ord의 OrdDtm 시점의 ItemPrcHist 정보로 처리합니다.
MemberID NickNm JoinDtm OrdDtm OrdQty ItemId ItemNm FromDt SalePrc
-------- ------ ------------------- ------------------- ------ ------ ------------------- ---------- --------
M9269 Ice185 2022-07-01 00:00:00 2024-01-05 13:00:00 1 CMFR Chocolate Muffin(R) 2023-01-01 3500.000
M9269 Ice185 2022-07-01 00:00:00 2024-01-05 14:00:00 1 CLB Cafe Latte(B) 2023-01-01 5000.000
SQL
복사
풀이
BOOSTER QUIZ 7-8-2
[BOOSTER QUIZ 7-8-1]의 SQL을 사용합니다. 회원의 가입일시(JoinDtm) 시점의 주문한 상품의 SalePrc를 보여주세요.
•
추가되는 컬럼: FromDtAtJoin, SalePrcAtJoin
•
FromDtAtJoin, SalePrcAtJoin: 가입일시 시점의 ItemPrcHist의 FromDt와 SalePrc입니다.
◦
기존 SQL에 ItemPrcHist 조인을 하나 더 추가합니다.
◦
Member의 JoinDtm과 OrdDet의 Item을 조인 조건으로 사용합니다.
MemberID NickNm JoinDtm OrdDtm OrdQty ItemId ItemNm FromDt SalePrc FromDtAtJoin SalePrcAtJoin
-------- ------ ------------------- ------------------- ------ ------ ------------------- ---------- -------- ------------ -------------
M9269 Ice185 2022-07-01 00:00:00 2024-01-05 13:00:00 1 CMFR Chocolate Muffin(R) 2023-01-01 3500.000 2010-01-01 3000.000
M9269 Ice185 2022-07-01 00:00:00 2024-01-05 14:00:00 1 CLB Cafe Latte(B) 2023-01-01 5000.000 2010-01-01 4500.000
SQL
복사
풀이
BOOSTER QUIZ 7-9-1
닉네임이 Air, Apple, Cloud인 회원의 2020년 1월 1일부터 2020년 1월 3일까지의 주문 데이터를 조회해주세요. 주문이 없는 회원도 보여주세요.
•
대상 테이블: 회원(Member)와 주문(Ord)
•
조회 조건
◦
NickNm이 Air, Apple, Cloud인 회원들의
◦
OrdDtm이 2020년 1월 1일부터 2020년 1월 3일까지의 데이터.
•
조회 컬럼: MemberId, NickNm, OrdNo, OrdDtm, OrdAmt
•
추가 조건: 주문이 없는 회원도 조회되도록 처리하시오.
MemberId NickNm OrdNo OrdDtm OrdAmt
-------- ------ ----- ------------------- --------
M0001 Air 1212 2020-01-01 08:00:00 8500.000
M0001 Air 1214 2020-01-02 08:00:00 7000.000
M0001 Air 1234 2020-01-03 08:00:00 2500.000
M0002 Apple NULL NULL NULL
M0003 Cloud NULL NULL NULL
SQL
복사
풀이
BOOSTER QUIZ 7-9-2
플래티넘 등급이면서 2020년 1월 4일에 가입한 회원의 2020년 2월의 주문과 주문상세 데이터를 보여주세요. 주문이 없는 데이터도 출력해주세요. 주문상세의 주문한 상품명도 꼭 같이 보여주세요.
•
대상 테이블: 회원(Member), 주문(Ord), 주문상세(OrdDet), 상품(Item)
•
조회 조건
◦
JoinDtm이 2020년 1월 4일이면서 MemberGd가 PLAT인 회원
◦
OrdDtm이 2020년 2월인 주문 데이터
•
조회 컬럼: MemberId ,NickNm ,JoinDtm ,MemberGd ,OrdNo ,OrdDtm ,OrdDetNo ,ItemId, ItemNm, OrdQty
•
추가 조건
◦
주문이 없는 회원도 조회되도록 처리하시오.
◦
Item과 조인해서 ItemNm도 보여주시오.
•
정렬 기준
◦
MemberId로 오름차순한후에 OrdNo, OrdDetNo로 오름차순하시오.
MemberId NickNm JoinDtm MemberGd OrdNo OrdDtm OrdDetNo ItemId ItemNm OrdQty
-------- ------- ------------------- -------- ----- ------------------- -------- ------ ------------------- ------
M1051 Air21 2020-01-04 00:00:00 PLAT NULL NULL NULL NULL NULL NULL
M1212 Fire24 2020-01-04 00:00:00 PLAT NULL NULL NULL NULL NULL NULL
M1213 Flame24 2020-01-04 00:00:00 PLAT NULL NULL NULL NULL NULL NULL
M1238 Sky24 2020-01-04 00:00:00 PLAT NULL NULL NULL NULL NULL NULL
M1252 Apple25 2020-01-04 00:00:00 PLAT 1513 2020-02-02 11:00:00 1 AMR Americano(R) 1
M1308 Dark26 2020-01-04 00:00:00 PLAT 1547 2020-02-04 14:00:00 1 HCHB Hot Chocolate(B) 1
M1308 Dark26 2020-01-04 00:00:00 PLAT 1621 2020-02-06 14:00:00 1 ICLB Iced Cafe Latte(B) 1
M1308 Dark26 2020-01-04 00:00:00 PLAT 1621 2020-02-06 14:00:00 2 BMFR Blueberry Muffin(R) 1
M1308 Dark26 2020-01-04 00:00:00 PLAT 1645 2020-02-08 14:00:00 1 HCHB Hot Chocolate(B) 1
M1308 Dark26 2020-01-04 00:00:00 PLAT 1645 2020-02-08 14:00:00 2 BGLR Bagel(R) 1
M1308 Dark26 2020-01-04 00:00:00 PLAT 1725 2020-02-13 14:00:00 1 BMFR Blueberry Muffin(R) 1
M1308 Dark26 2020-01-04 00:00:00 PLAT 1761 2020-02-21 14:00:00 1 ICLB Iced Cafe Latte(B) 1
M1322 Light26 2020-01-04 00:00:00 PLAT NULL NULL NULL NULL NULL NULL
M1388 Sky27 2020-01-04 00:00:00 PLAT NULL NULL NULL NULL NULL NULL
SQL
복사
풀이
BOOSTER QUIZ 7-10-1
플래티넘 등급이면서 2020년 1월에 가입한 회원에 대해, 회원별 2020년 2월 주문 금액과 주문 건수를 보여주세요. 주문이 없는 회원도 출력해주세요.
•
대상 테이블: 회원(Member), 주문(Ord)
•
조회 조건
◦
JoinDtm이 2020년 1월이면서 MemberGd가 PLAT인 회원들의
◦
OrdDtm이 2020년 2월달 주문 데이터
•
조회 컬럼: MemberId ,NickNm ,OrdAmtSum ,OrdCnt
•
추가 조건
◦
MemberId별로 GROUP BY 처리합니다.
◦
OrdAmtSum은 MemberId별 OrdAmt의 합계입니다.
◦
OrdCnt는 MemberId별 주문 건수입니다.
◦
주문이 없는 회원은 OrdAmtSum과 OrdCnt를 0으로 처리하시오.
•
정렬 기준: MemberId로 오름차순 정렬하시오.
MemberId NickNm OrdAmtSum OrdCnt
-------- ----------- ---------- ------
M1001 Air20 155000.000 29
M1018 Green20 0.000 0
M1042 Stone20 0.000 0
M1051 Air21 0.000 0
M1053 Cloud21 0.000 0
… 생략 …
SQL
복사
풀이
BOOSTER QUIZ 7-12-1
2020년부터 2023년까지의 주문에 대해 년도별 주문건수와 년도별 주문이 존재하는 회원수를 보여주세요. 주문건수와 주문이 존재하는 회원수를 각각의 레코드로 구분해서 보여주세요.
•
대상 테이블: 주문(Ord)
•
조회 조건
◦
OrdDtm이 2020년 1월 1일부터 2023년 12월 31일까지 데이터
•
조회 컬럼: OrdYY, 데이터구분, 값
•
추가 조건
◦
OrdYY: OrdDtm의 년도 값
◦
OrdYY별로 데이터를 집계합니다.
◦
데이터구분: ‘1. 주문건수’ 또는 ‘2. 회원수’라는 값을 가집니다.
▪
데이터 구분에 따라 두 개의 쿼리를 만들어 UNION ALL로 결합합니다.
◦
값
▪
데이터구분이 ‘1. 주문건수’인 경우는 주문의 건수를 표시합니다.
▪
데이터구분이 ‘2. 회원수’인 경우는 주문이 존재하는 회원수를 표시합니다.
•
COUNT(DISTINCT MemberId) 를 사용합니다.
•
정렬 조건: OrdYY로 먼저 정렬한후 데이터구분에 따라 정렬합니다.
OrdYY 데이터구분 값
----- ----------- ------
2020 1. 주문건수 9623
2020 2. 회원수 1716
2021 1. 주문건수 14443
2021 2. 회원수 2123
2022 1. 주문건수 41999
2022 2. 회원수 7415
2023 1. 주문건수 544906
2023 2. 회원수 6742
SQL
복사
풀이