본 내용은 데이터리안 'SQL 데이터 분석 캠프 실전반'을 수강하며 작성한 내용입니다.
아래 형식에 맞춰 요일별, 시간대별 매출액을 집계해 주세요. 매출액은 반올림하여 소수점 둘째 자리까지만 출력해 주세요.
SELECT day
, CASE WHEN time = 'Lunch' THEN ROUND(SUM(total_bill), 2) END AS lunch
, CASE WHEN time = 'Dinner' THEN ROUND(SUM(total_bill), 2) END AS dinner
FROM tips
GROUP BY day
ORDER BY day
: 이렇게 푸니 피봇팅이 lunch와 dinner 각각 매출이 나뉘게 출력되었다.
SELECT day
, ROUND(SUM(CASE WHEN time = 'Lunch' THEN total_bill ELSE 0 END), 2) AS lunch
, ROUND(SUM(CASE WHEN time = 'Dinner' THEN total_bill ELSE 0 END), 2) AS dinner
FROM tips
GROUP BY day
ORDER BY day
배송 예정일 예측 성공과 실패
SELECT DATE(order_purchase_timestamp) AS purchase_date
, SUM(CASE WHEN order_estimated_delivery_date >= order_delivered_customer_date THEN 1 ELSE 0 END) AS success
, SUM(CASE WHEN order_estimated_delivery_date < order_delivered_customer_date THEN 1 ELSE 0 END) AS fail
FROM olist_orders_dataset
WHERE order_delivered_customer_date IS NOT NULL
AND order_estimated_delivery_date IS NOT NULL
AND order_purchase_timestamp BETWEEN '2017-01-01 00:00:00' AND '2017-01-31 23:59:59'
GROUP BY purchase_date
ORDER BY purchase_date
SELECT DATE(order_purchase_timestamp) AS purchase_date
, COUNT(DISTINCT CASE WHEN order_estimated_delivery_date >= order_delivered_customer_date THEN order_id END) AS success
, COUNT(DISTINCT CASE WHEN order_estimated_delivery_date < order_delivered_customer_date THEN order_id END) AS fail
FROM olist_orders_dataset
WHERE order_delivered_customer_date IS NOT NULL
AND order_estimated_delivery_date IS NOT NULL
AND order_purchase_timestamp BETWEEN '2017-01-01 00:00:00' AND '2017-01-31 23:59:59'
GROUP BY purchase_date
ORDER BY purchase_date