Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

이지은님의 블로그

달리기반 퀘스트 - Lv5. 가장 많이 팔린 품목은? 본문

사전캠프 퀘스트

달리기반 퀘스트 - Lv5. 가장 많이 팔린 품목은?

queenriwon3 2024. 12. 2. 16:50
  • Products 테이블

 

  • Orders 테이블

 

  • Customers 테이블

 

  1. 각 고객이 구매한 모든 제품의 총 금액을 계산하고, 고객 이름, 총 구매 금액, 주문 수를 출력하는 SQL 쿼리를 작성해주세요.
SELECT CustomerName, 
	sum(Price * Quantity) TotalAmount, 
	count(Quantity) OrderCount
FROM 
(select c.CustomerName, o.Quantity, o.ProductID 
from Orders o join Customers c on o.CustomerID =c.CustomerID
) a JOIN Products p on a.ProductID =p.ProductID 
group by 1
order by 1

 

포인트1: 고객정보(Customers)와 상품정보(Products), 주문정보(Orders)를 사용해야하기 때문에 서브쿼리를 이용하여 3개의 테이블을 연결해주어야 한다. 

포인트2: 연결해준 테이블상에서 고객의 이름을 그룹화하여 가격의 합계, 주문 총수를 출력한다.

 

  • 결과
 

 

 

  1. 각 제품 카테고리별로 가장 많이 팔린 제품의 이름과 총 판매량을 조회하는 SQL 쿼리를 작성해주세요.
SELECT p.Category,
	p.ProductName Top_Product,
	sum(o.Quantity) TotalSold
FROM Orders o JOIN Products p ON o.ProductID =p.ProductID 
GROUP BY 1,2
HAVING TotalSold =
	(SELECT MAX(sum_Quantity)
	from 
		(select p2.Category, p2.ProductName, sum(Quantity) sum_Quantity
		from Orders o2 JOIN Products p2 on o2.ProductID =p2.ProductID
		GROUP BY 1,2) a 
	WHERE a.Category = p.Category )

 

포인트 1: 각 제품 수량 합의 최고 값을 불러와야하기 때문에 MAX(SUM())이 불가하므로 서브쿼리안에 서브쿼리를 써줘야한다. 

포인트 2: 카테고리와 제품을 그룹화 한 것을 2개 만들어줘야한다. 하나는 메인쿼리에서, 하나는 서브 쿼리에서 조건을 줄 때 사용된다.

 

  • 결과