Today i learned & Week i learned/SQL 관련

내일배움캠프 데이터분석 2주차 SQL 개인과제 [2]

데분조 2023. 12. 30. 10:11
반응형

문제 4: "여러 주문을 한 고객들의 총 구매액 계산하기"

두 테이블 **list_of_orders**와 **order_details**가 있습니다. list_of_orders 테이블은 고객 이름과 주문 ID를, order_details 테이블은 각 주문의 상세 금액을 포함하고 있습니다. 이 테이블들을 사용하여, 3개 이상의 주문을 한 고객들의 이름, 총 주문 횟수, 그리고 그들의 총 구매액을 계산하세요.

select l.CustomerName, count(l.CustomerName), sum(amount) 
# CustomerName, count(l.CustomerName), sum(amount) 컬럼 출력

from list_of_orders l
inner join order_details d
on l.order_id = d.order_id
# list_of_orders 테이블과 order_details 테이블 조인해서 사용!

group by l.CustomerName 
# CustomerName 컬럼 데이터 기반으로 그룹화! 

having count(l.CustomerName) >=3
# count(l.CustomerName) >=3 조건에 충족한 값만 출력!

 

출력 결과


문제 5: "평균 수량을 초과하는 주문 찾기"

order_details 테이블에는 다양한 주문들의 상세 정보가 저장되어 있습니다. 이 테이블의 각 행은 주문 ID(order_id), 카테고리(Category), 그리고 주문 수량(Quantity)을 포함합니다. 이 테이블을 사용하여 각 카테고리별 평균 주문 수량을 초과하는 모든 주문들을 찾아보세요.

SELECT o.order_id, o.Category, o.Quantity
# o.order_id, o.Category, o.Quantity 컬럼 출력!

FROM order_details o
JOIN (
    SELECT Category, AVG(Quantity) AverageQuantity
    FROM order_details
    GROUP BY Category
) avg_q 
ON o.Category = avg_q.Category
# order_details 테이블과 카테고리 별 평균 Quantity 값을 구한 order_details 테이블의 셀프 조인!


WHERE o.Quantity > avg_q.AverageQuantity 
# o.Quantity > avg_q.AverageQuantity 조건이 충족한 값만 출력!

 

출력 결과

 

TMI) 셀프 조인한 전체 테이블 확인

SELECT*
FROM order_details o
JOIN (
    SELECT Category, AVG(Quantity) AverageQuantity
    FROM order_details
    GROUP BY Category
) avg_q 
ON o.Category = avg_q.Category

 

출력 결과


문제 6: "카테고리별 매출액 순위 및 누적합계 계산하기"

order_details 테이블에는 주문의 상세 정보가 포함되어 있습니다. 이 테이블은 주문 ID(order_id), 카테고리(Category), 그리고 주문의 금액(Amount)을 포함합니다. 이 테이블을 사용하여 각 카테고리 내에서 각 주문의 매출액 순위와 그 카테고리 내의 누적 매출액을 계산하세요.

 

select order_Id, category, amount,
# order_Id, category, amount 컬럼 출력!

rank() over(partition by Category order by amount desc),
# Category 항목 별로 amount 내림차순 정렬하여 순위 매기기!

sum(amount) over(partition by category order by amount desc )
# category 항목 별로 amount 내림차순 정렬하여 amount 누적 합계 구하기!

from order_details;
# order_details 테이블 사용하기!

 

출력 결과


 

반응형