이지은님의 블로그
달리기반 퀘스트 - Lv5. 가장 많이 팔린 품목은? 본문
- Products 테이블
- Orders 테이블
- Customers 테이블
- 각 고객이 구매한 모든 제품의 총 금액을 계산하고, 고객 이름, 총 구매 금액, 주문 수를 출력하는 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: 연결해준 테이블상에서 고객의 이름을 그룹화하여 가격의 합계, 주문 총수를 출력한다.
- 결과
- 각 제품 카테고리별로 가장 많이 팔린 제품의 이름과 총 판매량을 조회하는 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개 만들어줘야한다. 하나는 메인쿼리에서, 하나는 서브 쿼리에서 조건을 줄 때 사용된다.
- 결과
'사전캠프 퀘스트' 카테고리의 다른 글
[JAVA] 걷기반 퀘스트 (0) | 2024.12.06 |
---|---|
달리기반 퀘스트 - Lv5. 예산이 가장 큰 프로젝트는? (0) | 2024.12.02 |
달리기반 퀘스트 - Lv4. 가장 높은 월급을 받는 직원은? (0) | 2024.12.02 |
달리기반 퀘스트 - Lv4. 단골 고객님 찾기 (1) | 2024.11.29 |
달리기반 퀘스트 - Lv3. 이용자의 포인트 조회하기 (1) | 2024.11.28 |