1. 문제목적
테이블 간 조인을 통해 데이터를 결합하고 집계 연산(SUM)과 그룹화(GROUP BY)를 통해 특정 기준에 따른 데이터를 요약하는 방법을 학습하는 것이다.
2. 핵심개념
JOIN
- 정의: 두 개 이상의 테이블을 공통된 컬럼을 기준으로 결합하는 연산.
SELECT table1.column1, table2.column2
FROM table1
JOIN table2
ON table1.common_column = table2.common_column;
- 특징: INNER JOIN은 공통 키를 기준으로 양쪽 테이블에 공통된 데이터만 반환.
SUM
- 정의: 특정 컬럼 값의 총합을 계산하는 집계 함수.
SELECT SUM(column)
FROM table;
GROUP BY
- 정의: 특정 컬럼을 기준으로 데이터를 그룹화하여 집계 연산을 수행.
SELECT column, SUM(value)
FROM table
GROUP BY column;
ORDER BY
- 정의: 데이터를 특정 컬럼을 기준으로 정렬.
SELECT * FROM table
ORDER BY column1 ASC, column2 DESC;
3. 문제해결 절차
- 데이터 분석
- PRODUCT 테이블에는 상품 정보(상품 코드, 가격, 상품 ID)가 있다.
- OFFLINE_SALE 테이블에는 판매 기록(판매량, 판매 날짜, 상품 ID)이 있다.
- 조인 조건 설정
- PRODUCT_ID를 기준으로 PRODUCT 테이블과 OFFLINE_SALE 테이블을 결합.
- 매출 계산
- 매출 = PRICE * SALES_AMOUNT.
- 그룹화 및 집계
- 상품 코드(PRODUCT_CODE)를 기준으로 그룹화하여 총 매출을 계산.
- 정렬 조건 설정
- 매출액을 기준으로 내림차순 정렬하고, 동일 매출액인 경우 상품 코드를 기준으로 오름차순 정렬.
4. 코드작성
sql
복사편집
-- 상품별 총 매출을 계산하고 정렬
SELECT
P.PRODUCT_CODE, -- 상품 코드
SUM(P.PRICE * O.SALES_AMOUNT) AS SALES -- 총 매출액: 가격 * 판매량의 합계
FROM
PRODUCT AS P -- PRODUCT 테이블을 P로 별칭 지정
JOIN
OFFLINE_SALE AS O -- OFFLINE_SALE 테이블을 O로 별칭 지정
ON
P.PRODUCT_ID = O.PRODUCT_ID -- 두 테이블을 PRODUCT_ID 기준으로 조인
GROUP BY
P.PRODUCT_CODE -- 상품 코드별로 그룹화
ORDER BY
SALES DESC, -- 매출액 기준 내림차순 정렬
P.PRODUCT_CODE ASC; -- 동일 매출액인 경우 상품 코드 기준 오름차순 정렬
5. 코드분석
SELECT
- P.PRODUCT_CODE: 상품 코드를 결과에 출력.
- SUM(P.PRICE * O.SALES_AMOUNT): 상품의 가격과 판매량을 곱하여 매출을 계산한 후, 총합을 반환. 별칭 SALES로 지정.
FROM과 JOIN
- PRODUCT AS P: 상품 정보를 포함한 테이블.
- OFFLINE_SALE AS O: 판매 정보를 포함한 테이블.
- ON P.PRODUCT_ID = O.PRODUCT_ID: 두 테이블을 PRODUCT_ID를 기준으로 조인하여 데이터를 결합.
GROUP BY
- P.PRODUCT_CODE: 상품 코드별로 데이터를 그룹화하여 매출을 집계.
ORDER BY
- SALES DESC: 매출액을 기준으로 내림차순 정렬.
- P.PRODUCT_CODE ASC: 동일 매출액일 경우 상품 코드를 기준으로 오름차순 정렬.
'SQL Kit > JOIN' 카테고리의 다른 글
조건에 맞는 도서와 저자 리스트 출력하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.04 |
---|