TIL/사전캠프 퀘스트

TIL 2024-09-24(SQL_달리기반 4.)

myoma 2024. 9. 24. 15:21

Lv4. 단골 고객님 찾기

요구사항

  •  고객별로 주문 건수와 총 주문 금액을 조회하는 SQL 쿼리를 작성해주세요.
    • 출력 결과에는 고객 이름, 주문 건수, 총 주문 금액이 포함되어야 합니다. 단, 주문을 한 적이 없는 고객도 결과에 포함되어야 합니다.
    • 기대결과

 

SELECT c.CustomerName, COUNT(CustomerID) OrderCount, SUM(TotalAmount) Totalspent 
FROM Orders o LEFT JOIN Customers c ON o.CustomerID = c.CustomerID
GROUP BY 1

 

두 데이터 테이블을 left join 해주고 공통된 데이터가 있는 컬럼으로 묶어준다.

각 이름별로 주문 건수와 총 주문 금액을 알아야 하기에

CustomerName을 GROUP BY 해주고 주문 건수는 COUNT()로, 주문 금액은 SUM()을 사용한다.

 

 

 

 

 

 

 

 

  • 나라별로 총 주문 금액이 가장 높은 고객의 이름과 그 고객의 총 주문 금액을 조회하는 SQL 쿼리를 작성해주세요.
    • 기대결과

SELECT Country,
	Top_Customer,
	Top_spent
FROM
	(
	SELECT Country,
		CustomerName Top_Customer,
		Top_spent,
		RANK() OVER (PARTITION BY Country ORDER BY Top_spent DESC) ranking
	FROM
		(
		SELECT Country,
			CustomerName,
			SUM(TotalAmount) Top_spent
		FROM
			(
			SELECT c.Country,
				c.CustomerName,
				o.TotalAmount
			FROM Orders o LEFT JOIN Customer c ON o.CustomerID = c.CustomerID
			) a
		GROUP BY 1, 2
		) b
	) c
WHERE ranking = 1
ORDER BY 1 DESC