본문 바로가기

SQL

SQL 문법 연습 - 11) 마지막 연습 문제 !

id name price
1 랩톱 1200
2 핸드폰 800
3 타블렛 400

 

id product_id quantity order_date
101 1 2 2023-03-01
102 2 1 2023-03-02
103 3 5 2023-03-04

 

1. 모든 주문의 주문 ID와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요!

select o.id, p.name

from orders o

left join products p

on o.product_id = p.id

 

2. 총 매출(price * quantity의 합)이 가장 높은 상품의 ID와/ 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요!

select p.id, sum(p.price * o.quantity) total_sales

from orders o

left join products p

on o.product_id = p.id

group by p.id

order by 2 DESC limit 1

 

3. 각 상품 ID별로 판매된 총 수량(quantity)을 계산하는 쿼리를 작성해주세요!

select p.id, sum(o.quantity)

from orders o

left join products p

on o.product_id = p.id

group by p.id

 

4. 2023년 3월 3일 이후에 주문된 모든 상품의 이름을 나열하는 쿼리를 작성해주세요!

select p.name

from orders o

inner join products p

on o.product_id = p.id

where o.order_date > '2023-03-03'

 

5. 가장 많이 판매된 상품의 이름을 찾는 쿼리를 작성해주세요!

select p.name, sum(o.quantity)

from orders o

inner join products p

on o.product_id = p.id

group by p.name

order by 2 desc limit 1

 

6. 각 상품 ID별로 평균 주문 수량을 계산하는 쿼리를 작성해주세요!

select p.id, avg(o.quantity)

from orders o

inner join products p

on o.product_id = p.id

group by p.id

 

7. 판매되지 않은 상품의 ID와 이름을 찾는 쿼리를 작성해주세요!

select a.id, a.name

from

(

select p.id, p.name, sum(o.quantity) as sum_quantity

from products p

left join orders o

on o.product_id = p.id

group by 1, 2

) a

where 0 = a.sum_quantity