Programing/Datababse
[MySQL] 문제풀이 : 단골 고객님 찾기
블스뜸
2025. 3. 25. 14:59
문제:
Orders 테이블:
|
OrderID
|
CustomerID
|
OrderDate
|
TotalAmount
|
|
101
|
1
|
2024-01-01
|
150
|
|
102
|
2
|
2024-01-03
|
200
|
|
103
|
1
|
2024-01-04
|
300
|
|
104
|
3
|
2024-01-04
|
50
|
|
105
|
2
|
2024-01-05
|
80
|
|
106
|
4
|
2024-01-06
|
400
|
Customers 테이블:
|
CustomerID
|
CustomerName
|
Country
|
|
1
|
Alice
|
USA
|
|
2
|
Bob
|
UK
|
|
3
|
Charlie
|
USA
|
|
4
|
David
|
Canada
|
요구사항:
1.
고객별로 주문 건수와 총 주문 금액을 조회하는 SQL 쿼리를 작성해주세요.
a.
출력 결과에는 고객 이름, 주문 건수, 총 주문 금액이 포함되어야 합니다. 단, 주문을 한 적이 없는 고객도 결과에 포함되어야 합니다.
b.
기대결과
|
CustomerName
|
OrderCount
|
TotalSpent
|
|
Alice
|
2
|
450
|
|
Bob
|
2
|
280
|
|
Charlie
|
1
|
50
|
|
David
|
1
|
400
|
더보기
select
c.CustomerName as customers_name,
count(1) as order_count,
sum(TotalAmount) as total_spent
from Orders as o
left join Customers as c on o.CustomerID = c.CustomerID
group by 1
2.
나라별로 총 주문 금액이 가장 높은 고객의 이름과 그 고객의 총 주문 금액을 조회하는 SQL 쿼리를 작성해주세요.
a.
기대결과
|
Country
|
Top_Customer
|
Top_Spent
|
|
USA
|
Alice
|
450
|
|
UK
|
Bob
|
280
|
|
Canada
|
David
|
400
|
더보기
select
o.Country as Country,
c.CustomerName as Top_Customer,
max(o.TotalAmount) as Top_Spent
from Orders as o
left join Customers as c on o.CustomerID = c.CustomerID
group by 1