반응형
https://school.programmers.co.kr/learn/courses/30/lessons/131533
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
데이터 분석에서 테이블을 조인하고, 그룹화하여 매출 데이터를 집계하는 것은 매우 흔한 작업입니다. 이 포스트에서는 PRODUCT 테이블과 OFFLINE_SALE 테이블을 사용해 상품코드 별 매출액(판매가 × 판매량) 합계를 구하고, 요구 조건에 맞게 정렬하는 SQL 쿼리를 작성하는 과정을 단계별로 설명하겠습니다.
문제
- PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.
요구사항 분석
- 상품코드 별 매출액 계산:
- 매출액 = 판매가(PRICE) × 판매량(SALES_AMOUNT)
- 상품코드 별 매출액 합계를 구해야 하므로, 그룹화(Group By) 필요.
- 테이블 관계:
- 두 테이블은 PRODUCT_ID를 기준으로 연결됩니다.
- 정렬 조건:
- 매출액을 기준으로 내림차순(DESC).
- 매출액이 같은 경우, 상품코드를 기준으로 오름차순(ASC).
- 결과 컬럼:
- PRODUCT_CODE: 상품코드.
- SALES: 매출액 합계.
해결
SELECT P.product_code AS PRODUCT_CODE, SUM(P.PRICE * O.SALES_AMOUNT) AS SALES
FROM PRODUCT AS P
JOIN OFFLINE_SALE AS O
ON P.PRODUCT_ID = O.PRODUCT_ID
group by p.PRODUCT_ID
order by SALES desc, PRODUCT_CODE asc
- SELECT:
- P.PRODUCT_CODE를 상품코드로 출력.
- SUM(P.PRICE * O.SALES_AMOUNT)로 매출액을 계산하고 출력.
- JOIN:
- PRODUCT와 OFFLINE_SALE 테이블을 PRODUCT_ID를 기준으로 연결.
- GROUP BY:
- PRODUCT_ID를 기준으로 데이터를 그룹화하여 각 상품코드 별 매출액 합계를 계산.
- ORDER BY:
- 매출액(SALES)을 기준으로 내림차순 정렬.
- 매출액이 같은 경우 상품코드(PRODUCT_CODE)를 기준으로 오름차순 정렬.
이 쿼리는 상품코드 별 매출액 합계를 계산하고, 요구된 정렬 조건에 맞게 결과를 반환합니다
이와 같은 조인과 그룹화를 활용하면 다양한 매출 데이터를 효과적으로 분석할 수 있습니다
SQL 작성 시 다음을 염두에 두세요:
- 조인의 기준 컬럼을 명확히 이해.
- 그룹화를 통해 필요한 수준으로 데이터를 집계
- 정렬 조건을 추가하여 결과를 가독성 높게 제공
SQL의 기본적인 데이터 분석 접근 방식을 익히는 데 도움이 되길 바랍니다.
반응형
'SQL' 카테고리의 다른 글
| [SQL/solvesql] LV3. 지역별 주문의 특징 (0) | 2025.01.09 |
|---|---|
| [SQL/프로그래머스] LV3. 배송 예정일 예측 성공과 실패 (2) | 2024.12.21 |
| [SQL/프로그래머스] LV3. 없어진 기록 찾기 (4) | 2024.12.05 |
| [SQL/solvesql] LV3. 작품이 없는 작가 찾기 (4) | 2024.12.05 |
| [SQL/solvesql] LV2. 다음날도 서울숲의 미세먼지 농도는 나쁨 😢 (6) | 2024.11.15 |