본문 바로가기

DATABASE23

Q. 코흐트 분석 코흐트 분석이란? 시간 흐름에 따라 구매패턴, 행동패턴을 분석하는 방법 첫 구매월을 기준으로 각 그룹간의 패턴을 파악할 것 ! 필요 데이터 : 고객 ID ➜ customerID 구매일자 ➜ InvoiceDate 가격 ➜ UnitPrice 판매수량 ➜ Quantity 조회방법 1. 고객별 첫 구매일 조회 고객별로 묶어주기 위해 group by 를 이용해 그룹화 해준다. 첫 구매일을 조회하기 위해서는 구매일 중 가장 작은 날 ! 즉 min() 최소값을 찾아주는 집계함수를 이용하여 첫 구매일을 조회한다. 2. 각 고객의 주문일자와 구매금액 조회 해석 고객 customerID 주문일자 invoiceDate 구매금액 (수량*가격) Quantity*UnitPrice 조회 3. 고객별 첫 구매일과 전체구매 내역을 j.. 2023. 12. 6.
Q. 특정구매자가 구매한 상품 조회 특정 구매자 가장 많이 판매된 상품 Top2 제품을 모두 구매한 구매자 ! 필요 데이터 : mydata002.dataset3 사용 고객 ID ➜ customerID 상품번호 ➜ StockCode 판매수량 ➜ Quantity 조회방법 1. 제품별 판매수량 조회 해석 제품별로 묶어주기 위해 group by 를 이용해 그룹화 해준다. 판매수량을 조회하기 위해서 sum() 합계 집계함수를 이용해 제품별 판매수량을 조회한다. 그리고 보기 편하도록 컬럼명을 QTY 로 설정해준다. 2. 가장 많이 판매된 상품 Top2 조회 서브쿼리를 이용해서 순위산출 함수를 사용할 수 있지만, 빠르게 하기 위해 (1) 번의 내용에서 판매수량 순서로 정렬을 해준 후 상위 2개만 출력되도록 한다. 판매수량 순으로 정렬하기 위해서는 or.. 2023. 12. 5.
(MySQL 기준) 동작 순서 동작순서에 대해 이야기 하기 전에 ! 왜 동작 순서가 중요한가? 1. 상품별 재구매율과 주문 건수 조회 2. O_cnt 기준 주문건수가 10 초과인 결과만 조회 (틀린답) 에러의 이유 : 우선순위 (동작의 순서) 때문이다. where 조건절이 group by 보다 먼저 실행되기 때문에 문제가 발생한 것이다. MySQL 기준 동작 순서 from ➜ where ➜ select ➜ group by, 집계함수 ➜ having ➜ order by ➜ limit where 과 having 의 차이 where : 가져온 테이블에서 데이터의 필터링을 원할 때 사용한다. having : 같은 조건절이지만, group by 한 결과물에서 데이터의 필터링을 원할 때 사용한다. 즉, group by 이용 ➜ having 사용.. 2023. 12. 4.
Q. 고객등급별 주문 건수 조회 필요 데이터: 데이터 모두 instacart002.orders 고객ID ➜ user_id 주문ID ➜ order_id 고객등급 고객의 수가 총 3159명이기 때문에 3160명으로 가정하고 10분위로 구분! 1분위 : (01~10%) 001~316 2분위 : (11~20%) 317~632 3분위 : (21~30%) 633~948 4분위 : (31~40%) 949~1264 5분위 : (41~50%) 1265~1580 6분위 : (51~60%) 1581~1895 7분위 : (61~70%) 1896~2211 8분위 : (71~80%) 2212~2527 9분위 : (81~90%) 2528~2843 10분위 : (91~100%) 2844~3160 조회방법 1. 고객별 주문 건수 파악하기 해석 고객별 주문 건수로 고.. 2023. 12. 2.
Q. 재구매율이 가장 높은 상품 조회 필요 데이터: 데이터 모두 instacart002.order_products__prior product_id ➜ 상품ID reordered ➜ 재구매 상품일 경우 1, 아닐 경우 0 으로 표시된 데이터 조회방법 1. 상품별 재구매율 조회 상품별로 재구매율을 구해주기 위해 우선 상품으로 그룹화를 해주어야 한다. group by 를 이용하여 product_id 를 그룹화 해준다. 재구매율이란 재구매 한 횟수 / 전체 구매 수 를 계산하면 된다. 이때, 재구매 한 횟수는 reordered 데이터를 합해주면 된다. 재구매의 상품일 경우 1로 표시되어 있기 때문이다. = sum(reordered) 전체 구매 수는 전체 행의 합을 구해주면 되기 때문에 count(*) 을 사용하면 된다. 따라서 sum(reorder.. 2023. 11. 30.
Q. 주문 건수가 많은 시간대 조회 필요 데이터 : 데이터 모두 instacart002.orders 주문번호 ➜ order_id 구매 시간 ➜ order_hour_of_day 조회방법 1. 시간대별 주문건수 조회 해석 시간대별로 묶어주기 위해 group by 를 사용하여 시간대로 그룹화해준다. 시간대별로 몇개의 주문건수가 있었는지 구하기 위해 count() 집계함수를 사용한다. 이때, 주문번호가 중복일 수 없기 때문에 distinct 를 이용하여 중복제거를 해준다. 2. 주문건수가 가장 많은 시간대 Top10 조회 이 때, 랭크함수를 사용하지 않고 조회해보기! 해석 (1) 번의 내용에서 주문건수 기준으로 순위를 구할 것이기 때문에 order by 를 이용하여 정렬해준다. 이때, 많은 것이 1등이어야 하기 때문에 내림차순 즉, desc 를 .. 2023. 11. 29.