olist_orders_dataset →orders(order_id,cus_id)
olist_order_payments_dataset →payments(order_id)
payment_value
olist_customers_dataset →customers(customer_id)
state
Q1. orders 테이블 안에 몇 일 치의 데이터가 들어있나요? order_purchase_timestamp 컬럼을 기준으로 데이터의 시작 시점과 끝 시점을 알려주세요.
select *
from olist_orders_dataset
order by order_purchase_timestamp
limit 3
2016-09-04 21:15:19
2018-10-17 17:30:18
Q2. 고객들은 어떤 주(state)에 살고 있나요? customers 테이블 안에 customer_state 컬럼을 참고하여 olist 고객들이 어떤 주에 살고 있는지 알아봅시다. 이 정보를 주문 데이터(orders)와 연결하려면 어떤 컬럼을 사용해야 하나요?
select customer_state, count(customer_state)
from olist_customers_dataset
group by customer_state
order by count(customer_state) desc
customer_id

Q3. 고객들의 결제 데이터는 어떤 테이블에 있나요? 주문 하나에 결제 로그가 하나 붙어있는 1:1 관계인가요, 아니면 주문 하나에 결제 로그가 여러개 있을 수 있는 1:N 관계인가요? 결제 금액은 어떤 컬럼을 보고 알 수 있나요? orders 테이블과 결제 데이터는 어떤 컬럼을 기준으로 연결할 수 있나요?
olist_order_payments_dataset --payments
1:N
payment value
order_id
Q4. orders, customers, payments 테이블을 사용하여 2017년에 매출이 많이 나오는 주(customer_state)가 어디인지 알아봅시다. 2017년 매출 Top 3 주를 꼽아주세요.

select *
from olist_orders_dataset
where order_purchase_timestamp between '2017-01-01' and '2017-12-31'
limit 20
select *
from olist_orders_dataset as orders
left join olist_order_payments_dataset as payments
on orders.order_id = payments.order_id
where order_purchase_timestamp between '2017-01-01' and '2017-12-31'
limit 20
select *
from olist_orders_dataset as orders
left join olist_order_payments_dataset as payments
on orders.order_id = payments.order_id
left join olist_customers_dataset as customers
on orders.customer_id = customers.customer_id
where order_purchase_timestamp between '2017-01-01' and '2017-12-31'
limit 20
select customer_state, round(sum(payment_value), 4) as 2017_state_sales
from olist_orders_dataset as orders
left join olist_order_payments_dataset as payments
on orders.order_id = payments.order_id
left join olist_customers_dataset as customers
on orders.customer_id = customers.customer_id
where order_purchase_timestamp between '2017-01-01' and '2017-12-31'
group by customer_state
order by sum(payment_value) desc