SQL연습문제

마지막 연습 문제 !

Twisted 2024. 8. 29. 17:38

다음과 같은 상품(products) 테이블과 주문(orders) 테이블이 있습니다.

  • products 테이블

id name price

1 랩톱 1200
2 핸드폰 800
3 타블렛 400
  • orders 테이블

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와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요!
  2. 총 매출(price * quantity의 합)이 가장 높은 상품의 ID와 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요!
  3. 각 상품 ID별로 판매된 총 수량(quantity)을 계산하는 쿼리를 작성해주세요!
  4. 2023년 3월 3일 이후에 주문된 모든 상품의 이름을 나열하는 쿼리를 작성해주세요!
  5. 가장 많이 판매된 상품의 이름을 찾는 쿼리를 작성해주세요!
  6. 각 상품 ID별로 평균 주문 수량을 계산하는 쿼리를 작성해주세요!
  7. 판매되지 않은 상품의 ID와 이름을 찾는 쿼리를 작성해주세요!

 

 

A1.

SELECT o.id '주문번호', p.name '상품이름'
FROM orders o
JOIN products p
ON p.id = o.product_id;

 

 

A2.

SELECT p.id '상품ID', SUM(p.price*o.quantity) '총매출'
FROM products p
JOIN orders o
ON p.id = o.product_id
GROUP BY p.id;

 

 

A3.

SELECT p.id '상품ID', SUM(o.quantity) '판매수량'
FROM products p
JOIN orders o
ON p.id = o.product_id
GROUP BY p.id

 

 

A4.

SELECT o.order_date '주문날짜', p.name '상품이름'
FROM products p
JOIN orders o 
ON p.id = o.product_id
WHERE o.order_date > '2023-03-03';

 

 

A5.

SELECT p.name '상품이름'
FROM products p
JOIN(
SELECT product_id, SUM(quantity) '판매수량'
FROM orders
GROUP BY product_id
) o
ON p.id = o.product_id
ORDER BY o.총판매수량 DESC
LIMIT 1;

 

 

A6.

SELECT p.id '상품ID', AVG(o.quantity) '평균주문수량'
FROM products p
JOIN orders o 
ON p.id = o.product_id
GROUP BY p.id;

 

 

A7.

SELECT p.id '상품ID', p.name '상품이름'
FROM products p
LEFT JOIN orders o 
ON p.id = o.product_id
WHERE o.product_id IS NULL;