지금까지 배운 전부(SELECT, JOIN, 서브쿼리, CTE, 윈도우 함수, 인덱스, EXPLAIN, 트랜잭션, 스키마 설계)를 총동원합니다.
정답과 채점 기준은 solutions.md 에 있습니다. 먼저 스스로 풀고 나서 여세요.
모든 쿼리는
shopDB 에서 실행합니다.mysql -h127.0.0.1 -P3307 -ulearner -plearn1234 shop공용 테이블은 읽기만 하고, 새 테이블은s25_접두사로 만드세요. 매출은 취소 주문(status='CANCELLED')을 제외하고,order_items.quantity * unit_price로 계산합니다.
각 문제 아래에 요구 출력과 핵심 힌트, 배점이 있습니다.
2024년 각 월(YYYY-MM)의 주문 건수와 매출 합계를 구하라.
DATE_FORMAT, JOIN order_items, GROUP BY 월카테고리별 총매출을 구하고 매출 내림차순 순위(RANK)를 매겨라.
categories JOIN products JOIN order_items, 윈도우 RANK() OVER (ORDER BY ...)고객별 R(최근성: 마지막 주문일로부터의 경과일), F(빈도: 주문 수), M(금액: 총구매액)을 구하고,
각각을 NTILE(5) 로 1~5 점수화한 뒤, 아래 규칙으로 세그먼트를 붙여라.
r>=4 AND f>=4 → Champions / r>=4 → Recent / f>=4 → Loyal / r<=2 AND f<=2 → At Risk / 그 외 Others2025-12-31.CTE 두 단계(집계 → NTILE), DATEDIFF, CASENTILE(5) OVER (ORDER BY recency DESC))카테고리 × 연도 매출을 구하고, 전년 대비 성장률(%) 을 LAG 로 계산하라.
LAG(rev) OVER (PARTITION BY category ORDER BY year)NULL / 성장률 = (올해-작년)/작년*100전체 구매 고객 중 2회 이상 주문한 고객의 비율을 구하라.
SUM(cnt>=2)/COUNT(*)기준일(2025-12-31)로부터 180일 넘게 주문이 없거나, 주문 이력이 아예 없는 고객을 찾아라.
LEFT JOIN, HAVING days_since > 180 OR last_order IS NULL같은 주문에 함께 담긴 상품 쌍을 세어 상위 조합을 구하라(2회 이상).
order_items 셀프조인 with a.product_id < b.product_id (중복/자기자신 제거)< 로 쌍 중복 제거했는가첫 주문 월을 코호트로 삼아, 코호트별로 이후 0/1/2/3개월차에 활동한 고객 수를 피벗하라.
TIMESTAMPDIFF(MONTH, ...) 로 월차 계산 → COUNT(DISTINCT CASE WHEN month_no=k ...)고객 등급(grade)별 주문 수, 총매출, 평균 주문금액을 구하라.
AOV = 매출 / 주문수, ORDER BY FIELD(grade,'VIP','GOLD','SILVER','BRONZE')완료된 결제(status='DONE')를 수단별로 집계하고 전체 대비 비율(%) 을 구하라.
COUNT(*) / SUM(COUNT(*)) OVER ()리뷰가 있는 상품에 대해 평균 평점과 판매 수량을 함께 보여라.
products LEFT JOIN reviews LEFT JOIN order_items, HAVING reviews > 0월별 매출과 누적 매출을 함께 구하라.
SUM(rev) OVER (ORDER BY 월)slow-queries.sql 을 실행하면 100만 행 s25_logs 와 느린 쿼리 3개가 준비됩니다.
각 쿼리를 EXPLAIN ANALYZE 로 진단하고, 결과는 동일하되 빠른 버전으로 고치세요.
JOIN + GROUP BY 로 바꾸면 무엇이 좋아지는가?LEFT JOIN 으로 주문 0건 고객 보존 / 결과 동일쇼핑몰에 쿠폰 기능을 추가하려 합니다. 아래 요구사항을 만족하는 스키마를 설계하세요.
(테이블은 s25_coupon, s25_coupon_issue 등 s25_ 접두사)
요구사항
제출물
CREATE TABLE 문 (컬럼 타입, PK/FK, UNIQUE, CHECK, 인덱스 포함)채점 기준(30점)
EXPLAIN ANALYZE 비교 + 결과 동일 증명CREATE TABLE + 설계 근거 문서