ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <TIL> 2023-12-29
    내일배움캠프(데이터 분석 부트캠프 1기)/TIL & WIL 2023. 12. 29. 21:36

    내일배움캠프 본 캠프 9일차 TIL 작성

    2024년 새해 전 마지막 학습일지


    • 오늘 학습한 것
      1. 내일배움캠프 SQL 개인과제 문제
      2. CLV(고객 평생 가치)

    SQL 개인과제 문제를 풀다가 알게 된 것

     

    정제된 코딩테스트의 데이터를 다루는 것과 정제되지 않은 raw 데이터를 다루는 것은 확실하게 다르다.

    비정제 데이터를 쿼리로 다루는 경험이 필요하다. 


    개인과제

    개인과제를 시작하기 위해 데이터를 MySQL localhost에 저장하고 불러 온 뒤 딱 첫 문제를 푸는데 오류와 맞닥뜨렸다.

    날짜 데이터 형식에 관련한 문제였다. 데이터 형식은 dd-mm-yyyy였는데 

     

    yyyy-mm-dd형식이었다면 string형태라도 대소비교가 됐겠지만 datetime형태로 바꿔주어야할 것 같아서

    기계적으로 DATE_FORMAT() 함수를 입력했다.

    select min(date_format(order_date), '%d-%m-%Y')
    from list_of_orders

     

    결과는 당연히 오류 

     

    그 이유는 해당 데이터의 형식이 VARCHAR였기 때문이다 DATE_FORMAT 함수는 DATETIME형태, DATE형태를 인수로 받는 함수이기 때문에 에러가 난 것이다.

     

    따라서 STR_TO_DATE()함수를 사용해야했다.

    select min(str_to_date(order_date, '%d-%m-%Y'))
    from list_of_orders;

     

    그런데 이번에는 값이 비어있는 행이 하나 조회되는 것이었다. 

    그래서 데이터를 조회해보니 Null은 아니고 값이 공백('')으로 되어 있는 행이 하나 있는 것을 발견하였다.

    select min(str_to_date(order_date, '%d-%m-%Y'))
    from list_of_orders
    where order_date<>'';

    그래서 해당 조건을 입력하였고 원하는 결과를 얻을 수 있었다.

     

    아주 간단한 문제에서 조차 데이터에 대해서 제대로 파악하지 않고 코테 풀듯이 기계적으로 접근하니 오류에 부딪히는 것을 경험해보면서 raw 데이터를 많이 다뤄서 SQL에 더 익숙해져야겠다는 생각이 들었다.

    그리고 쿼리에 좀 더 익숙해지면 대용량 DB에서 조회할 때 쿼리 속도 개선을 위한 튜닝을 하는 방법들도 배우고 싶어졌다.


    CLV(Customer Lifetime Value, CLTV라고도 함)

    개인과제는 초, 중, 고급문제로 나뉘어져 있었는데 그 중 고급 문제에서 CLV를 계산하는 문제가 출제되었다.

    CLV를 튜터님 피드백에서 들어보긴 했어서 대충 어떤 의미인지는 알고 있었는데 이걸 직접 테이블에 있는 데이터를 통해서 계산을 하라고 하니 머리가 복잡해졌다.

     

    인터넷을 검색해보았을 땐 CLV를 계산하는 방식이 무조건 정해져있는 것은아니라는 것을 알게되었다. 

    그래서 문제를 풀다 말고 튜터님께 찾아가서 CLV 계산에 대해서 조언을 구했다. 

     

    그리고 여러 링크를 참고하여 보편적인 CLV의 개념에 대해서 알아보았다.  

     

    CLV란 고객 생애 가치로 고객이 회사의 제품 혹은 서비스를 이용하는 동안 얼마의 이익을 생성시켜주는가를 계산한 것이다.

     

    평균 구매 가치 : 특정 기간 내 총 수익을 총 구매횟수로 나눈 값

    평균 구매 빈도 : 특정 기간 내 구매 횟수를 특정 기간 내 총 고객으로 나눈 값

     

    그리고 이 둘을 곱한 값인 고객 가치에 

    평균 고객 수명(고객이 지속적으로 구매한 기간/총 고객 수)

    를 곱하여 CLV를 구한다. 

     

    따라서 CLV  = 평균 구매 가치 * 평균 구매 빈도 * 평균 고객 수명인 것이다.

     

    나는 전체 고객의 고객 가치를 구해야하는 것이 아니라 특정한 고객의 고객 가치를 구해야했기 때문에 

    해당 고객이 얼마나 자주 구매를 했는가를 평균 구매 빈도 지표로 설정하하여 쿼리를 작성하였다.

     

    고객 생애 가치를 향상 시키는 것은 수익과 직결되기 때문에 상당히 중요한 분석 결과가 되는데 

    이를 향상 시키는 방법은 신규고객 확보보다는 기존 고객 유지를 잘 하는 것, 고객 만족도를 높이는 것이라고 알려져있다고 한다.

     

    데이터 분석가는 그렇다면 여기서 이탈한 고객과 유지하는 고객에는 어떠한 데이터의 차이가 있는지

    만족한 고객과 그렇지 못한 고객의 데이터에는 어떠한 차이가 있는지를 분석해내야할 것이다.

     

    이번 개인과제는 해당하는 분석까지 해보기에는 부적절한 데이터였지만 다음에 프로젝트로 데이터를 보게 되면

    이러한 부분에 대해서 집중해서 CLV를 산출하는 것에서 끝내지 않고 그 부분에 대한 심층적인 분석까지 해보아야겠다는 생각을 했다. 

     

     

    '내일배움캠프(데이터 분석 부트캠프 1기) > TIL & WIL' 카테고리의 다른 글

    <TIL> 2024-01-02  (1) 2024.01.02
    <WIL> 2023년 12월 4주차 회고  (1) 2023.12.29
    <TIL> 2023-12-28  (0) 2023.12.28
    <TIL> 2023-12-27  (1) 2023.12.27
    <TIL> 2023-12-26  (1) 2023.12.26
Designed by Tistory.