solvesql - SQL문제

solvesql - 할부는 몇 개월로 해드릴까요(Group by)

정차노 2024. 11. 12. 23:13

문제 출처 : https://solvesql.com/problems/installment-month/

 

https://solvesql.com/problems/installment-month/

 

solvesql.com

 

 

 

1. 문제

난이도3, 정답률 17.43% 
olist_order_payments_dataset 테이블에는 각 주문의 결제 정보가 저장되어 있습니다.

고객이 Olist 상점에서 신용카드로 주문한 내역을 할부 개월 수 별로 나누어 살펴보려고 합니다. 할부 개월 수 별로 주문 수, 최소 결제 금액, 최대 결제 금액, 평균 결제 금액을 집계해주세요. 결과 데이터에는 5개의 컬럼이 들어가야 합니다.

-  payment_installments - 할부 개월 수
-  order_count - 주문 수
-  min_value - 최소 결제 금액
-  max_value - 최대 결제 금액
-  avg_value - 평균 결제 금액

 

2. 조건

  • 결제 수단이 신용카드
  • 할부개월수 별로 주문수, 최소, 최대, 평균 결제금액 집계

 

3. 쿼리

-- 고객이 Olist상점에서 주문 내역을 할부 개월 수별로 나누어 살펴보려고 함
SELECT
     oo.payment_installments AS payment_installments
    ,COUNT(distinct oo.order_id) AS order_count 
    ,MIN(payment_value) AS min_value 
    ,MAX(payment_value) AS max_value 
    ,AVG(payment_value) AS avg_value 
FROM olist_order_payments_dataset as oo
WHERE payment_type = 'credit_card'
GROUP BY oo.payment_installments

우선 주문 내역의 할부개월 수 별로 나누어 집계해야하기 때문에 payment_installments로 Group By를 걸어준다. 조건으로는 결제 수단이 credit_card이기 때문에 Where에 조건을 걸어주고 이후에 order_id를 distinct로 걸어 Count를 해줌으로써 주문의 갯수를 확인할 수 있다.
최소, 최대, 평균의 값은 각각 MIN, MAX, AVG집계함수를 사용하여 출력이 가능하다.

4. 실행 결과