SQL 연습 문제 - Lv5. 가장 많이 팔린 품목은?

이희수·2024년 12월 19일

Products 테이블:

ProductIDProductNameCategoryPrice
1LaptopElectronics1000
2SmartphoneElectronics800
3HeadphonesElectronics150
4Coffee MakerHome200
5BlenderHome100

Orders 테이블:

OrderIDProductIDOrderDateQuantityCustomerID
10112024-02-0121
10232024-02-0212
10322024-02-0311
10442024-02-0433
10512024-02-0512
10652024-02-0623

Customers 테이블:

CustomerIDCustomerNameCountry
1AliceUSA
2BobUK
3CharlieUSA

문제:

  1. 각 고객이 구매한 모든 제품의 총 금액을 계산하고, 고객 이름, 총 구매 금액, 주문 수를 출력하는 SQL 쿼리를 작성해주세요.

select CustomerName, sum(Price) TotalAmount, count(a.OrderCount) OrderCount
from
(
select c.CustomerName, o.ProductID, count(o.OrderID) OrderCount
from customers c join orders o on c.CustomerID = o.CustomerID
group by 1,2
) a join products p on a.ProductID = p.ProductID
group by 1

첫번째 서브쿼리에서 customers테이블과 orders테이블을 join한 뒤, 필요한 columns들을 선택한다.
두번째 서브쿼리에서는 이미 join된 테이블과 product테이블을 join한 뒤, 집계함수를 사용하여 문제에서 요구하는 총구매금액, 주문수를 계산한다.

  1. 각 제품 카테고리별로 가장 많이 팔린 제품의 이름과 총 판매량을 조회하는 SQL 쿼리를 작성해주세요.

select Category , Top_Product, TotalSold
from
(
select p.Category , p.ProductName Top_Product, sum(o.Quantity) TotalSold,
rank () over(order by sum(o.Quantity) desc) ranking
from products p left join orders o on p.ProductID = o.ProductID
group by 1,2
) a
where ranking = 1

product테이블과 orders테이블을 join해서, 제품별 판매수량을 구하고,
판매수량이 많은 순으로 랭킹을 매겨,
1순위 제품만 결과로 보여주도록 한다.

0개의 댓글