2-6. 버뮤다 삼각지대에 들어가버린 택배
☁️ 날짜타입 변경할 때, 추출할 때 사용하는 함수 : strftime
☁️ 내가 추출하고자 하는 형식에 맞게 group by를 해주어야 원하는대로 그룹핑 가능. 시간까지 출력되는 형태이므로 group by 해줘도 시간이 맞지 않으면 그룹핑 되지 않으므로 주의.
select strftime('%Y-%m-%d',order_delivered_carrier_date) as delivered_carrier_date, count(order_id) as orders
from olist_orders_dataset
where strftime('%Y-%m',order_delivered_carrier_date)='2017-01' and
order_delivered_customer_date is null
group by strftime('%Y-%m-%d',(order_delivered_carrier_date))
order by delivered_carrier_date
2-7. 쇼핑몰의 일일 매출액
select strftime('%Y-%m-%d',tb_order.order_purchase_timestamp) as dt, round(sum(tb_payment.payment_value),2) as revenue_daily
from olist_orders_dataset as tb_order join
(select order_id, payment_value
from olist_order_payments_dataset) as tb_payment
on tb_order.order_id = tb_payment.order_id
where tb_order.order_purchase_timestamp>='2018-01-01'
group by strftime('%Y-%m-%d',tb_order.order_purchase_timestamp)
order by dt
2-8. 점검이 필요한 자전거 찾기
☁️ 1월 한달간 자전거 내역이지만, 반납일자와는 관계 없으므로 1월 기준으로 찾아주면 된다. 이후 일자까지 제한하지 않아도 되는 이유는 2월에 점검대상인 자전거를 찾는거라서 2월 기록이 없다.
select bike_id
from rental_history
where rent_at>='2021-01-01'
group by bike_id
having sum(distance)>=50000
2-9. 레스토랑의 대목
select total_bill, tip, sex, smoker, tb1.day, tb1.time, tb1.size
from tips as tb1 join
(select day
from tips
group by day
having sum(total_bill)>=1500) as tb2
on tb1.day = tb2.day
☁️ 생각지 못했던 in을 사용한 경우를 찾게되서 적어둔다. 이렇게하면 select문에 컬럼을 따로 지정해주지 않아도 된다. 출처
select *
from tips
where day in (select day
from tips
group by day
having sum(total_bill)>=1500)
2-10. 레스토랑의 요일별 VIP
select *
from tips
group by day
having max(total_bill)