Q. records 테이블, customer_stats 테이블에 각각 어떤 데이터들이 들어있는지 테이블에서 데이터를 10개만 뽑아서 확인해봅시다. records 테이블의 한 행은 주문 1개를 의미하나요?
SELECT *
FROM records
LIMIT 10
아니다. order_id가 겹치는 경우가 많음.
한 행은 상품 한 개를 의미함.
Q. records 테이블에 들어있는 'JP-15520' 유저의 데이터를 확인해봅시다.
SELECT *
FROM records
WHERE customer_id = 'JP-15520'
-- 해당 유저가 주문을 한 횟수는 몇 번인가요? 2번
SELECT COUNT(DISTINCT order_id) AS total_order
FROM records
WHERE customer_id = 'JP-15520'
-- 해당 유저가 맨 처음 주문을 했던 날짜는 언제였나요? 2020-12-08
SELECT MIN(order_date)
FROM records
WHERE customer_id = 'JP-15520'
-- 해당 유저가 가장 마지막으로 주문을 했던 날짜는 언제였나요? 2020-12-22
SELECT MAX(order_date)
FROM records
WHERE customer_id = 'JP-15520'
Q. customer_stats 테이블에 들어있는 'JP-15520' 유저의 데이터를 확인해봅시다.
SELECT *
FROM customer_stats
WHERE customer_id = 'JP-15520'
-- records 테이블로 확인한 데이터와 숫자들을 비교해봅시다. 똑같은 수치가 나왔나요?
Q. customer_stats 테이블은 records 테이블을 요약하여 만들었습니다. 요약하는 쿼리를 작성해봅시다.
SELECT customer_id
, MIN(order_date) AS first_order_date
, MAX(order_date) AS last_order_date
, COUNT(DISTINCT order_id) AS cnt_orders
, SUM(sales) AS sum_sales
FROM records
GROUP BY customer_id
Q. customer_stats 테이블의 first_order_date 컬럼은 각 고객이 처음 주문한 날짜입니다. date_format() 함수를 이용하여 first_order_date 컬럼을 ‘YYYY-MM-01’ 형태로 가공하고 first_order_month로 출력해주세요.
SELECT DATE_FORMAT(first_order_date, '%Y-%m-01') AS first_order_month
FROM customer_stats
Q. 위에서 구한 first_order_month 컬럼을 활용해 매달 해당 월에 처음 주문한 고객의 수를 계산해주세요.
SELECT DATE_FORMAT(first_order_date, '%Y-%m-01') AS first_order_month
, COUNT(customer_id)
FROM customer_stats
GROUP BY first_order_month
'DATA ANALYSIS > 실습' 카테고리의 다른 글
[SQL] 클래식 리텐션(classic retention) 분석 (0) | 2023.01.13 |
---|