Home [solvesql] 가구 판매의 비중이 높았던 날 찾기
Post
Cancel

[solvesql] 가구 판매의 비중이 높았던 날 찾기

[solvesql] 가구 판매의 비중이 높았던 날 찾기

출처

문제

US E-Commerce Records 2020 데이터셋은 미국 이커머스 웹사이트의 판매 데이터 입니다. 이 중 records 테이블은 주문 번호, 주문 날짜, 주문 지역, 카테고리 등 주문의 상세 정보를 담고 있습니다. 이 데이터를 이용하여 가구 판매의 비중이 높았던 날을 찾고 싶습니다. 일별 주문 수가 10개 이상인 날 중에서, ‘Furniture’ 카테고리 주문의 비율이 40% 이상 이었던 날만 출력하는 쿼리를 작성해주세요. 카테고리 정보는 category 컬럼에 기록되어 있습니다.

결과 데이터는 아래의 컬럼들을 포함해야 합니다. Furniture 카테고리의 주문 비율은 백분율로 계산하며, 반올림하여 소수점 둘째자리까지만 출력해주세요. Furniture 카테고리의 주문 비율이 높은 것부터 보여주도록 정렬하고, 비율이 같다면 날짜 순으로 정렬해주세요.

  • order_date - 주문 날짜
  • furniture - 해당 일의 Furniture 카테고리 주문 수
  • furniture_pct - 해당 일의 전체 주문 대비 Furniture 카테고리 주문의 비율 (%)

결과 데이터 예시

order_datefurniturefurniture_pct
2020-06-30654.55
2020-12-29650

결과 데이터 해석

  • 2020년 6월 30일 주문 중 6건은 Furniture 카테고리에서 나온 주문입니다. 이는 2020년 6월 30일 전체 주문 중 약 54.55% 비중을 차지합니다.
  • 2020년 12월 29일 주문 중 6건은 Furniture 카테고리에서 나온 주문입니다. 이는 2020년 12월 29일 전체 주문 중 약 50% 비중을 차지합니다.

풀이

  • 나누기 할때 소수점 출력이 되지 않았다. 덧셈, 뺄셈, 곰셈 문제 없었음.
  • 결과값 뒤에 +0.00을 하여 float 타입으로 변경 후 계산
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
select
  order_date,
  count(
    distinct (
      case
        when category = "Furniture" then order_id
      end
    )
  ) as furniture,
  round(
    (
      count(
        distinct (
          case
            when category = "Furniture" then order_id
          end
        )
      ) + 0.00
    ) / (count(distinct (order_id)) + 0.00) * 100,
    2
  ) as furniture_pct
from
  records
group by
  order_date
having
  count(distinct order_id) >= 10
  and furniture_pct >= 40
order by
  furniture_pct desc order_date

gh-pages

This post is licensed under CC BY 4.0 by the author.

[solvesql] 지역별 주문의 특징

[Programmers] 분수의 덧셈