SQL

[SQL/프로그래머스] LV2. 상품 별 오프라인 매출 구하기

jy9892 2024. 12. 5. 22:10
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/131533

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

데이터 분석에서 테이블을 조인하고, 그룹화하여 매출 데이터를 집계하는 것은 매우 흔한 작업입니다. 이 포스트에서는 PRODUCT 테이블과 OFFLINE_SALE 테이블을 사용해 상품코드 별 매출액(판매가 × 판매량) 합계를 구하고, 요구 조건에 맞게 정렬하는 SQL 쿼리를 작성하는 과정을 단계별로 설명하겠습니다.

 

문제 

  • PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요. 

요구사항 분석

  1. 상품코드 별 매출액 계산:
    • 매출액 = 판매가(PRICE) × 판매량(SALES_AMOUNT)
    • 상품코드 별 매출액 합계를 구해야 하므로, 그룹화(Group By) 필요.
  2. 테이블 관계:
    • 두 테이블은 PRODUCT_ID를 기준으로 연결됩니다.
  3. 정렬 조건:
    • 매출액을 기준으로 내림차순(DESC).
    • 매출액이 같은 경우, 상품코드를 기준으로 오름차순(ASC).
  4. 결과 컬럼:
    • 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

 

  1. SELECT:
    • P.PRODUCT_CODE를 상품코드로 출력.
    • SUM(P.PRICE * O.SALES_AMOUNT)로 매출액을 계산하고 출력.
  2. JOIN:
    • PRODUCT와 OFFLINE_SALE 테이블을 PRODUCT_ID를 기준으로 연결.
  3. GROUP BY:
    • PRODUCT_ID를 기준으로 데이터를 그룹화하여 각 상품코드 별 매출액 합계를 계산.
  4. ORDER BY:
    • 매출액(SALES)을 기준으로 내림차순 정렬.
    • 매출액이 같은 경우 상품코드(PRODUCT_CODE)를 기준으로 오름차순 정렬.

 


 

이 쿼리는 상품코드 별 매출액 합계를 계산하고, 요구된 정렬 조건에 맞게 결과를 반환합니다
이와 같은 조인과 그룹화를 활용하면 다양한 매출 데이터를 효과적으로 분석할 수 있습니다

 

SQL 작성 시 다음을 염두에 두세요:

  • 조인의 기준 컬럼을 명확히 이해.
  • 그룹화를 통해 필요한 수준으로 데이터를 집계
  • 정렬 조건을 추가하여 결과를 가독성 높게 제공

SQL의 기본적인 데이터 분석 접근 방식을 익히는 데 도움이 되길 바랍니다.

반응형