✨APS (Algorithm Problem Solving)/SolveSQL

[solvesql] 지역별 주문의 특징 / SQLite

Nyan cat 2022. 12. 12. 10:43

 

📜 문제 설명

US E-Commerce Records 2020 데이터셋은 미국 이커머스 웹사이트의 판매 데이터 입니다. records 테이블은 주문 번호, 주문 날짜, 주문 지역, 카테고리 등 주문의 상세 정보를 담고 있습니다. 이 데이터를 이용하여 미국의 각 지역별로 어떤 카테고리의 상품이 많이 판매되는지 알아보려고 합니다. region, category 별 주문량을 계산해 출력하는 쿼리를 작성해주세요.

 

결과 데이터 형식

결과 데이터는 아래와 같은 테이블 형태로 출력되어야 하고, Region 컬럼 기준 오름차순으로 정렬되어 있어야 합니다.

RegionFurnitureOffice SuppliesTechnology

REGION Furniture Office Supplies Technology
Central      
East      
South      
West      

결과 데이터의 각 컬럼은 다음과 같은 의미를 갖습니다.

  • Region - 주문 지역
  • Furniture - 해당 지역 내 가구(’Furniture’) 주문 수
  • Office Supplies - 해당 지역 내 오피스 물품(’Office Supplies’) 주문 수
  • Technology - 해당 지역 내 전자기기(’Technology’) 주문 수

 

records  테이블

  • date | order_date 주문 날짜
  • string | order_id 주문 ID
  • string | ship_mode 배송 타입
  • string | customer_id 고객 ID
  • string | segment 고객 타입
  • string | country 국가
  • string | city 도시
  • string | state 주
  • integer | postal_code 우편번호
  • string | region 지역
  • string | product_id 상품 ID
  • string | category 카테고리
  • string | sub_category 서브 카테고리
  • string | product_name 상품명
  • number | sales 매출
  • integer | quantity 수량
  • number | discount 할인
  • number | profit 이익

 

❓ 문제

미국의 각 지역별로 어떤 카테고리의 상품이 많이 판매되는지 알아보려고 합니다.

지역별로 판매된 가구의 타입을 아래 카테고리로 세분화해 출력해주세요

  • Furniture - 해당 지역 내 가구(’Furniture’) 주문 수
  • Office Supplies - 해당 지역 내 오피스 물품(’Office Supplies’) 주문 수
  • Technology - 해당 지역 내 전자기기(’Technology’) 주문 수

 

🔗 문제 링크

https://solvesql.com/problems/characteristics-of-orders/

 

solvesql

 

solvesql.com

 

💡 문제 풀이

지역을 조회하고 category가 각 구분에 해당하는 가구들의 판매 수량을 세고 그룹화해서 출력함

SELECT
  region AS "Region",
  SUM(
    DISTINCT (
      CASE
        WHEN category = "Furniture" THEN cnt
      END
    )
  ) AS "Furniture",
  SUM(
    DISTINCT (
      CASE
        WHEN category = "Office Supplies" THEN cnt
      END
    )
  ) AS "Office Supplies",
  SUM(
    DISTINCT (
      CASE
        WHEN category = "Technology" THEN cnt
      END
    )
  ) AS "Technology"
FROM
  (
    SELECT
      region,
      category,
      COUNT(DISTINCT (order_id)) AS cnt
    FROM
      records
    GROUP BY
      region,
      category
    ORDER BY
      region
  )
GROUP BY
  region
ORDER by
  region
반응형