본문 바로가기

분류 전체보기339

[자동차 매출 데이터] Churn Rate 구하기 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. ✅ Churn Rate 란? 활동 고객 중 얼마나 많은 고객이 비활동 고객으로 전환되었는지를 의미하는 지표이다. 기업에서는 이탈 고객 예측과 예측 결과를 바탕으로 적절한 마케팅 전략을 취하고자 노력하므로 Churn Rate 가 중요하다. Churn Rate는 일반적으로 다음과 같이 정의한다. max(구매일, 접속일) 이후 일정 기간동안 구매/접속을 하지 않은 상태 보통 90일(3개월)을 기준으로 Churn Rate을 구한다. 마지막 구매, 접속일이 현 시점 기준 3개월이 지난 고객이 이탈 고객이 되는 것이다. 1. Churn Rate 구하기 Churn Rate의 기준은 마지막 구매일이다. 따라서 각 고객의 마지막 구매일을 먼저 구해야 한다. sele.. 2023. 10. 5.
[자동차 매출 데이터] 미국 베스트셀러 top 5 자동차 구하기 (서브쿼리) 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. 최종 쿼리와 결과 select * from ( select * , row_number() over (order by sales desc) as ranking from (select productName, sum(priceEach * quantityordered) as sales from orders as a left join orderdetails as b on a.orderNumber = b.orderNumber left join products as c on b.productCode = c.productCode left join customers as d on d.customerNumber = a.customerNumber where countr.. 2023. 10. 5.
[자동차 매출 데이터] 연도별 재구매율 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. 재구매율은 특정 기간 구매자 중, 특정 기간에 연달아 구매한 구매자의 비중이다. 연도별 재구매율을 구해 보자. 최종 쿼리와 결과 select country, substr(a.orderDate, 1, 4) as year ,count(distinct a.customerNumber) as BU_1 ,count(distinct b.customerNumber) as BU_2 ,count(distinct b.customerNumber) / count(distinct a.customerNumber) as retention_rate from orders as a left join orders b on a.customernumber = b.customernumber.. 2023. 10. 5.
[자동차 매출 데이터] 매출 top 5 국가와 매출 (서브쿼리) 본 포스팅은 아래 도서의 내용을 스터디, 참고했습니다. 최종 쿼리와 결과 select * from( select country, sales, dense_rank() over (order by sales desc) as sales_rank from ( select country , sum(priceEach * quantityordered) as sales from orders as a left join customers as b on b.customerNumber = a.customerNumber left join orderdetails as c on a.ordernumber = c.ordernumber group by 1 ) a ) b where sales_rank 2023. 10. 5.
[시각화] 크롤링 결과 워드클라우드 시각화 빅데이터 콘테스트의 수상작 제목을 워드클라우드로 시각화해보자. 결과는 다음과 같다. 라이브러리와 데이터 불러오기 import pandas as pd from wordcloud import WordCloud import matplotlib.pyplot as plt df = pd.read_csv('BigdataContest.csv') df.head() 한글 폰트 설정 from matplotlib import font_manager, rc # 한글 폰트 설정 font_path = "../NanumGothic.ttf" # "NanumGothic.ttf" 파일이 있는 경로로 수정 font_name = font_manager.FontProperties(fname=font_path).get_name() rc('fon.. 2023. 10. 4.
[시각화] 한글 폰트 코드 정리 matplotlib이나 seaborn으로 그래프를 그릴 때 한글이 깨져서 나오거나 워드클라우드로 한글이 안나올때가 있다. 시도할 수 있는 코드를 정리해 보았다. 코드 1 이 코드의 핵심은 font_path에 폰트 파일을 넣고, 그 경로를 명확히 써야하는 것이다. 나머지는 똑같이 복붙하면 된다. from matplotlib import font_manager, rc # 한글 폰트 설정 font_path = "../NanumGothic.ttf" # "NanumGothic.ttf" 파일이 있는 경로로 수정 font_name = font_manager.FontProperties(fname=font_path).get_name() rc('font', family=font_name) 코드 2 이 코드는 설치된 폰트 .. 2023. 10. 4.
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 문제 ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요. 풀이 이 문제의 핵심은 두 개 테이블을 UNION 하는 것이다. 조건에 맞게 온/오프라인 데이터를 필터링하고, 이를 union 한 후, 정렬 방식을 ORDER BY 로 지정하면 끝! 또한, 오프라인 데이터에서 USER_ID 는 Null 값으로 처리하라고 한 부.. 2023. 10. 4.
[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 문제 USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해 주세요. 결과는 댓글 작성일을 기준으로 오름차순 정렬해 주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해 주세요. 풀이 1 DATE_FORMAT()은 많이 사용하니 알아두자. 특정 형식으로 날짜형을 출력하고 싶을 때 지정한다. 이 문제의 핵심은 JOIN 후, 2022년 10월에 해당하는 데이터만 추출하는 것인데 풀이 1과 풀이 2 두 가지 방법을 확인하자. 풀이 1에서는 단순히 날짜형 칼럼의 구간을 지정하는 것으로, BETWEEN을 사용했다. SELECT a.TITLE.. 2023. 10. 4.
[프로그래머스] 서울에 위치한 식당 목록 출력하기 문제는 프로그래머스 홈페이지에서 더 자세히 확인하실 수 있습니다. https://school.programmers.co.kr/learn/courses/30/lessons/131118 문제 REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요. 풀이 SELECT info.REST_ID, info.REST_NAME, info.FOOD_TYPE, info.FAVORITES, info.ADDRESS, round(.. 2023. 10. 4.
728x90