[solvesql] 가구 판매의 비중이 높았던 날 찾기
출처
문제
US E-Commerce Records 2020 데이터셋은 미국 이커머스 웹사이트의 판매 데이터 입니다. 이 중 records
테이블은 주문 번호, 주문 날짜, 주문 지역, 카테고리 등 주문의 상세 정보를 담고 있습니다. 이 데이터를 이용하여 가구 판매의 비중이 높았던 날을 찾고 싶습니다. 일별 주문 수가 10개 이상인 날 중에서, ‘Furniture’ 카테고리 주문의 비율이 40% 이상 이었던 날만 출력하는 쿼리를 작성해주세요. 카테고리 정보는 category
컬럼에 기록되어 있습니다.
결과 데이터는 아래의 컬럼들을 포함해야 합니다. Furniture 카테고리의 주문 비율은 백분율로 계산하며, 반올림하여 소수점 둘째자리까지만 출력해주세요. Furniture 카테고리의 주문 비율이 높은 것부터 보여주도록 정렬하고, 비율이 같다면 날짜 순으로 정렬해주세요.
order_date
- 주문 날짜furniture
- 해당 일의 Furniture 카테고리 주문 수furniture_pct
- 해당 일의 전체 주문 대비 Furniture 카테고리 주문의 비율 (%)
결과 데이터 예시
order_date | furniture | furniture_pct |
---|---|---|
2020-06-30 | 6 | 54.55 |
2020-12-29 | 6 | 50 |
결과 데이터 해석
- 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