본문 바로가기

TOOLS/My SQL

[My SQL] DATEDIFF와 TIMEDIFF / 날짜와 시간 차이 반환 / 고객 구매 주기 분석

728x90
728x90

안녕하세요. 에린이 인사드립니다,,😇 

 

요즘 에스큐엘 복습하면서 쿼리문을 이것저것 뽑아보는데,

매일 사용하는 데이터만 만지니까 좀 지루,, 하더라구요. 저는 뭐든 흥미를 빠르게 잃어버리는 능력이 있습니다,,🥱

 

담번엔 케글에서 다양한 데이터를 내려받아서 쿼리문 뽑아보려구요.

다양한 데이터를 활용해서 더 많은 내용을 공유하도록 할게요🔥

 

오늘은 날짜&시간 데이터간 차이를 반환해주는 DATEDIFFTIMEDIFF 함수를 알아보겠습니다.

 

 


 

|  DATEDIFF

날짜1과 날짜 2의 차이를 반환하는 함수입니다.

DATEDIFF(날짜1, 날짜2)

 

DATEDIFF 함수 예시 )

SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') AS today,
       '2023-03-01' AS day_before,
       DATEDIFF(NOW(),'2023-03-01') AS 'DATEDIFF';

 

 

|  TIMEDIFF

시간1과 시간2의 차이를 반환하는 함수입니다.

TIMEDIFF(시간1, 시간2)

 

TIMEDIFF 함수 예시 )

SELECT NOW() AS today_now,
       '2023-03-11 13:00:00' AS today,
       TIMEDIFF(NOW(),'2023-03-11 13:00:00') AS 'TIMEDIFF';

 

 

 

그럼 예제를 통해 DATEDIFF 함수를 어떻게 사용하는지 확인해볼게요-!

 

 

반응형

 

예제 1) 

🙋🏻‍♀️ : 우리 고객의 최초 구매일자와 마지막 구매일자 간 차이 일수가 궁금해요.

 

- Table: Order_list

- Column: customer_id, purchased_at

 

SELECT customer_id,
       MIN(purchased_at) AS '첫구매일자',
       MAX(purchased_at) AS '최근구매일자',
       DATEDIFF(MAX(purchased_at),MIN(purchased_at)) AS 'date_diff'
FROM Order_list
GROUP BY customer_id
HAVING COUNT(customer_id) >= 2 ;

 

MIN([컬럼명])은 최소값을 구하는 함수이다.

MAX([컬럼명])은 최대값을 구하는 함수이다.

 

고로, MIN([구매일자 컬럼]) = 첫구매일자, 최초구매일자를 출력,

MAX([구매일자 컬럼]) = 최근구매일자를 출력한다.

 

최초 구매일자와 마지막 구매일자는 2번 이상 구매한 고객들만 해당이 되므로,

HAVING 절에 customer_id가 2개 이상인 것들만 필터링하였다.

 

 

 

 

🗣 그럼 우리 고객의 최초 구매일자와 마지막 구매일자 간 차이 평균도 알려주세요!

 

 

이땐, WITH 구문을 사용.

위에 작성한 쿼리를 'paying_customer' 라는 별도의 임시 테이블로 만들고, 평균 값을 구하는 쿼리문을 아래에 추가하였다.

 

WITH paying_customer 
AS 
  ( SELECT customer_id,
           MIN(purchased_at) AS '첫구매일자',
           MAX(purchased_at) AS '최근구매일자',
           DATEDIFF(MAX(purchased_at),MIN(purchased_at)) AS date_diff
    FROM Order_list
    GROUP BY customer_id
    HAVING COUNT(customer_id) >= 2 
   ) 
      
SELECT ROUND(AVG(date_diff), 2) AS '최근구매-첫구매 평균'
FROM paying_customer ;

 

첫 구매와 마지막 구매 주기는 평균을 냈을 때 대략 15일이라는 것을 알 수 있다.

 

 


⇩ 함께 읽으면 좋은 포스팅 추천 🧚‍♀️ 

2023.03.02 - [TOOLS/My SQL] - [My SQL] DATE_FORMAT 함수 / 날짜에서 요일, 시간 값 출력하기

 

[My SQL] DATE_FORMAT 함수 / 날짜에서 요일, 시간 값 출력하기

이전 포스팅에서 요일별 매출 출력을 위해 DAYOFWEEK 함수를 활용해서 숫자형 데이터로 요일을 출력하는 방법을 소개했다. 2023.02.22 - [Tools/My SQL] - [My SQL] 요일별 매출 - DAYOFWEEK 함수 / 날짜에서 요일

4xyzw.tistory.com

 

2023.02.22 - [TOOLS/My SQL] - [My SQL] 요일별 매출 - DAYOFWEEK 함수 / 날짜에서 요일 출력하기

 

[My SQL] 요일별 매출 - DAYOFWEEK 함수 / 날짜에서 요일 출력하기

2023년 2월 마지막주를 달려가고 있다. 시간 순삭..😇 새해도 빠르게 지났으니,, 2023년 1월달 요일별 매출을 알아봐야 한다고 가정해보자. 테이블과 컬럼은 아래와 같다. - Table: order - Column: customer_

4xyzw.tistory.com

 

728x90
728x90