1. 요일별 매출액 집계. 매출액은 반올림하여 소수점 둘째자리까지만 출력
SELECT day
, ROUND(SUM(total_bill)) as 매출액
FORM tips
GROUP BY day -- 요일별
Q. 아래 형식에 맞춰 요일별, 시간대별 매출액을 집계해주세요. 매출액은 반올림하여 소수점 둘째자리까지만 출력해주세요.
day | lunch | dinner |
Sun | ||
Sat | ||
Thur | ||
Fri |
SELECT day,
round(sum(if(time = "Lunch", total_bill, 0)),2) as Lunch,
round(sum(if(time = "Dinner", total_bill, 0)),2) as Dinner
FROM tips
GROUP BY day
2. 첫번째 주문일자(min), 마지막 주문일자(max)
SELECT DATE(min(order_purchase_timestamp)) first_order_date
,DATE(max(order_purchase_timestamp)) last_order_date
FROM olist_orders_dataset
3. 고객의 구매 일자별로 배송 예정 시각 안에 고객에게 도착한 주문과, 배송 예정 시각이 지나서 고객에게 도착한 주문을 각각 집계
- 배송 완료 또는 배송 예정 시각 데이터가 없는 경우는 계산에서 제외
- 계산 결과는 구매 날짜를 기준으로 오름차순 정렬
SELECT DATE(order_purchase_timestamp) purchase_date
, COUNT(CASE WHEN order_delivered_customer_date <= order_estimated_delivery_date
THEN order_id END) AS success
, COUNT(CASE WHEN order_delivered_customer_date > order_estimated_delivery_date
THEN order_id END) AS fail
FROM olist_orders_dataset o
WHERE o.order_purchase_timestamp BETWEEN '2017-01-01 00:00:00' AND '2017-01-31 23:59:59'
AND order_delivered_customer_date IS NOT NULL
AND order_estimated_delivery_date IS NOT NULL
GROUP BY order_purchase_timestamp
ORDER BY order_purchase_timestamp ASC
4. 하루 평균 몇번의 범죄가 일어나는지 구하기
SELECT daily_stats.week
,AVG(daily_stats.incidents_daily)
FROM (
SELECT week
, date
, COUNT(incident_id) AS incidents_daily
FROM crimes
GROUP BY week,date
) daily_stats -- 테이블처럼 사용가능
GROUP BY daily_stats.week
5. 레스토랑의 요일별 총 매출액의 평균을 구하기
SELECT AVG(sales)
FROM (
SELECT day
,SUM(total_bill) AS sales
FROM tips
GROUP BY day
) AS daily -- 서브쿼리 테이블 별칭 필수!!
-- WITH문 활용 (자주 사용)
WITH daily AS(
SELECT day
,SUM(total_bill) AS sales
FROM tips
GROUP BY day
)
SELECT *
FROM daily
6. 각 영수 금액이, 요일별 매출액에서 차지하는 비율을 계산하기
(비율은 반올림하여 소수점 둘째자리까지만 출력하고, 영수 금액이 높은 것부터 출력)
WITH daily AS(
SELECT day
,SUM(total_bill) AS sales
FROM tips
GROUP BY day
)
SELECT tips.day
,tips.total_bill
,ROUND(tips.total_bill * 100 / daily.sales,2) as pct
FROM tips
INNER JOIN daily ON tips.day = daily.day
ORDER BY total_bill desc
'🛠️Skill > SQL' 카테고리의 다른 글
[SQL문법] COALESCE : null이 아닌 첫번째 값 반환 (0) | 2023.01.10 |
---|---|
[SQL문법] SET 변수 사용하기 / MySQL (0) | 2023.01.05 |
[SQL문법] GROUP_CONCAT 그룹별 집계 (0) | 2022.12.14 |
[SQL 문제] LISTAGG / 최대공약수, 최소공배수 / 직각삼각형 (0) | 2022.12.13 |
[SQL 문제] UNPIVOT / 구구단 / 삼각형, 사각형 출력 / 숫자의 합, 곱, 짝수, 소수 출력 (0) | 2022.12.13 |
댓글