DATA 사전캠프

11일차 SQL 스터디: 마지막 연습 문제 !

sawo11 2024. 11. 19. 02:16

다음과 같은 상품(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

 

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

SELECT o.id order_id, 
	p.name product_name
FROM products p
INNER JOIN orders o ON p.id = o.product_id;

 

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

SELECT o.product_id, 
       SUM(p.price * o.quantity) total_revenue
FROM products p
INNER JOIN orders o ON p.id = o.product_id
GROUP BY o.product_id
ORDER BY total_revenue DESC
LIMIT 1;

 

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

SELECT product_id,
	SUM(quantity) product_quantity
FROM orders
GROUP BY product_id;

 

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

SELECT p.name product_name
FROM products p
INNER JOIN orders o ON p.id = o.product_id
WHERE o.order_date >= '2023-03-03'

 

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

SELECT p.name product_name, 
       SUM(o.quantity) total_quantity
FROM products p
INNER JOIN orders o ON p.id = o.product_id
GROUP BY p.name
ORDER BY total_quantity DESC
LIMIT 1;

 

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

SELECT product_id, 
	AVG(quantity) avg_quantity
FROM orders
GROUP BY product_id;

 

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

SELECT p.id AS product_id, 
       p.name AS product_name
FROM products p
LEFT JOIN orders o ON p.id = o.product_id
WHERE o.product_id IS NULL;