Lv5. 가장 많이 팔린 품목은?
내가 틀린/놓친 부분은 민트색으로 표시!
1.
각 고객이 구매한 모든 제품의 총 금액을 계산하고, 고객 이름, 총 구매 금액, 주문 수를 출력하는 SQL 쿼리를 작성해주세요.
나의 답 |
select customerName,
sum(total) TotalAmount, count(*) OrderCount from (select o.CustomerID, p.Price, o.Quantity, p.Price*o.Quantity total from Orders o inner join products p on o.ProductID=p.ProductID ) a join Customers c on a.CustomerID=c.CustomerID group by 1 |
정답 |
SELECT
c.CustomerName, SUM(p.Price * o.Quantity) AS TotalAmount, COUNT(o.OrderID) AS OrderCount FROM Customers c JOIN Orders o ON c.CustomerID = o.CustomerID JOIN Products p ON o.ProductID = p.ProductID GROUP BY c.CustomerName; |
오답 노트 | 오답은 아니지만.. JOIN으로 테이블 여러개를 연속적으로 연결할 수 있다! 서브쿼리 복잡하게 만드는 거 보다, 테이블에 포함된 컬럼이 중복이 없다면 join을 여러번 하는게 더 효율적인듯하다. |
고민한 점 | 테이블 JOIN할 때 on 뒤에 컬럼 확인 잘 하기!!! 잘못 연결했다가 한시간 고민했다. |
2.
각 제품 카테고리별로 가장 많이 팔린 제품의 이름과 총 판매량을 조회하는 SQL 쿼리를 작성해주세요.
나의 답 |
select p1.Category,
p2.ProductName Top_Product, a.total from Products p1 join Products p2 on p1.ProductID=p2.ProductID join ( select ProductID, sum(Quantity) Total from Orders group by 1) a on p2.ProductID=a.ProductID WHERE a.Total = ( SELECT MAX(Total) FROM ( SELECT SUM(o.Quantity) AS Total FROM Orders o JOIN Products p ON o.ProductID = p.ProductID WHERE p.Category = p1.Category GROUP BY p.ProductID ) AS b ) |
정답 |
SELECT
p.Category, p.ProductName AS Top_Product, SUM(o.Quantity) AS TotalSold FROM Products p JOIN Orders o ON p.ProductID = o.ProductID GROUP BY p.Category, p.ProductName HAVING SUM(o.Quantity) = ( SELECT MAX(SumQuantity) FROM (SELECT p2.Category, SUM(o2.Quantity) AS SumQuantity FROM Products p2 JOIN Orders o2 ON p2.ProductID = o2.ProductID GROUP BY p2.Category, p2.ProductID) AS Subquery WHERE Subquery.Category = p.Category ); |
오답 노트 | 정답은 어떠한 흐름으로 작성했을까 봐도봐도 모르겠다. 알게되면 오답노트 추가해야지... |
고민한 점 | 카테고리별 상위 1개 구하는게 너무 어렵다. 서브쿼리에 같은 내용을 계속 적는게 맞는것인가... ①카테고리별, 제품별 판매량 조회하기 ②제품의 이름 연결하기 ③구해진 판매량과 MAX값 비교하여 필터링 하기... 이 순서대로 작성하니까 3번 작성하기가 너무 어렵다. 좀더 효과적인 접근 방법이 무엇일까 |
==> 다시 풀어보기!!! 뭔가 잘못됨
'내일배움캠프 > 사전캠프 과제' 카테고리의 다른 글
[걷기반] Java 알아보기 (1) | 2025.02.12 |
---|---|
[달리기반] SQL 문법 연습 7 (0) | 2025.01.25 |
[달리기반] SQL 문법 연습 5 (0) | 2025.01.24 |
[달리기반] SQL 문법 연습 4 (0) | 2025.01.23 |
[달리기반] SQL 문법 연습 3 (0) | 2025.01.23 |