DB/SQL

[solvesql] 문제 정리

h_sseul 2023. 7. 19. 19:54

- 레스토랑의 일일 매출

 

select day, sum(total_bill) revenue_daily
from tips
group by day
having sum(total_bill) >= 1000
order by revenue_daily desc;

 

 

- 레스토랑의 일일 평균 매출액 계산하기

 

일별 매출 합계 구한 뒤, 이를 하나의 평균 매출액으로 계산하는 것

 

SELECT round(avg(sum_bill), 2) as avg_sales
from 
(SELECT day, sum(total_bill) as sum_bill
from tips
group by day);

 

 

- 우리 플랫폼에 정착한 판매자 2

 

한 명의 판매자 - 여러 명의 고객들(1:N 관계)

 

select seller_id, count(distinct order_id) orders
from olist_order_items_dataset
where price >= 50
group by seller_id
having count(distinct order_id) >= 100
order by orders desc;

 

 

- 많이 주문한 테이블 찾기

 

SELECT *
from tips
where total_bill > (select avg(total_bill) from tips); -- 식사금액 > 평균 식사금액

 

 

- 레스토랑의 대목

 

select * -- 결제내역 모두 출력
from tips
where day in 
	(select day 
    from tips 
    group by day 
    having sum(total_bill) >= 1500);

 

 

- 레스토랑의 요일별 VIP

 

select * -- 모든 컬럼 출력
from tips
where total_bill in -- 요일별 가장 높은 금액
    (select max(total_bill)
    from tips
    group by day);

 

 

- 배송 예정일 예측 성공과 실패

 

SELECT strftime('%Y-%m-%d', order_purchase_timestamp) as purchase_date
  , count(case when order_delivered_customer_date < order_estimated_delivery_date then order_id end) 'success'
  , count(case when order_delivered_customer_date >= order_estimated_delivery_date then order_id end) 'fail'
FROM
  olist_orders_dataset
WHERE
  strftime ('%Y-%m', order_purchase_timestamp) = '2017-01'
  and
  (order_delivered_customer_date or order_estimated_delivery_date) is not null
GROUP BY purchase_date
ORDER BY purchase_date;

 

select 절 case when 구문 익숙해지기