[PostgreSQL] solvesql LV.6 카테고리 별 매출 비율

2025. 10. 7. 00:10·프로그래밍 언어/02. SQL

🔍 문제

1. 첫 주문과 마지막 주문

문제 링크 : https://solvesql.com/problems/revenue-pct-per-category/


🎯정답

-- CTE를 통해서 카테고리 별 매출 합계를 구한다.
with total_category_sales as
  (select category, sum(sales) as sales_category
  from records
  group by category),
-- 다시 CTE를 통해서 서브 카테고리별 매출을 구해주며, 이 때 카테고리도 포함되게 만든다.
  total_sub_category_sales as 
  (select category, sub_category, sum(sales) as sales_sub_category
  from records
  group by sub_category, category
  order by sub_category)

select
  s.category,
  s.sub_category,
  round(s.sales_sub_category, 2) as sales_sub_category,
  round(c.sales_category, 2) as sales_category,
  -- 서브쿼리를 이용해서 전체 매출 값을 sales_total로 구해준다.
  (select round(sum(sales_category), 2) from total_category_sales) as sales_total,
  -- 각 서브 카테고리 별 매출 비율 구하기
  round((s.sales_sub_category / c.sales_category) * 100, 2) as pct_in_category,
  -- 전체 매출 중에서 서브 카테고리별 매출 비율 구하기
  round((s.sales_sub_category / (select round(sum(sales_category), 2) from total_category_sales)) * 100, 2)as pct_in_total

from
  total_sub_category_sales s
  join
  total_category_sales c
  on
  s.category = c.category
order by s.category

❓풀이

  • 총 두 개의 CTE를 활용해서 카테고리 별 매출, 서브 카테고리 별 매출을 구해준다.
  • 카테고리 컬럼을 기준으로 join 하여 구할 수 있는 값은 구해준다.
  • select문 안에서 서브쿼리를 이용해 전체 매출을 구해줬으며, 이를 통해 전체 매출 대비 각 서브 카테고리 별 매출 비율을 구해줬다.

'프로그래밍 언어 > 02. SQL' 카테고리의 다른 글

[PostgreSQL] solvesql LV.2 언더스코어(_)가 포함되지 않은 데이터 찾기  (0) 2025.10.07
[PostgreSQL] solvesql LV.2 다음날도 서울숲의 미세먼지 농도는 나쁨  (0) 2025.10.07
[SQL] 프로그래머스 LV.4 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기  (0) 2025.09.11
[SQL] 프로그래머스 LV.4 FrontEnd 개발자 찾기  (0) 2025.09.09
[SQL] 프로그래머스 LV.4 자동차 대여 기록 별 대여 금액 구하기  (0) 2025.09.09
'프로그래밍 언어/02. SQL' 카테고리의 다른 글
  • [PostgreSQL] solvesql LV.2 언더스코어(_)가 포함되지 않은 데이터 찾기
  • [PostgreSQL] solvesql LV.2 다음날도 서울숲의 미세먼지 농도는 나쁨
  • [SQL] 프로그래머스 LV.4 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기
  • [SQL] 프로그래머스 LV.4 FrontEnd 개발자 찾기
dalleeoppaa
dalleeoppaa
DA, GIS 공부 기록
  • dalleeoppaa
    달래오빠
    dalleeoppaa
  • 전체
    오늘
    어제
    • 분류 전체보기 (112) N
      • GIS (22)
        • 01. GIS TIL (13)
        • 02. OpenSource Geo Data (6)
        • 03.사이드 프로젝트 (1)
      • 프로젝트 (6)
        • 01. 상권분석 지도 (3)
        • 02. olist 고객 RFM 분석 (3)
      • PointCloud (1)
      • 프로그래밍 언어 (57) N
        • 01. Python (1)
        • 02. SQL (49)
        • 03. C++ (3) N
        • 04. TIL (4)
      • 데이터분석 (23)
        • 01. Google Cloud Platform (1)
        • 02. GA4 & GTM (1)
        • 03. LookerStudio (4)
        • 04. Apach Spark (7)
        • 05. 데이터 시각화 (10)
      • 인턴 (2)
        • 01. NPL (2)
        • 02. TIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    태블로연습
    sql코테
    데이터분석가코테
    SQL
    프로그래머스코테
    프로그래머스lv3
    데이터분석취준
    태블로부트캠프
    데이터분석
    프로그래머스SQL
    GIS
    코딩테스트
    c++독학
    태블로신병훈련소
    프로그래머스
    PostgreSQL
    postgresql연습
    데이터분석가
    MySQL
    solvesql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dalleeoppaa
[PostgreSQL] solvesql LV.6 카테고리 별 매출 비율
상단으로

티스토리툴바