날짜 차이 쿼리작성 질문 0 1 1,241

by 힘내라김대리 [SQL Query] 오라클 날짜계산 [2020.05.06 11:54:00]


안녕하세요 궁금한게 있어서 질문을 드립니다.

다음과 같이 테이블의 정보가 있을때, 각 회원의 구매주기를 구하려고 합니다.

회원별 구매횟수를 count 해야하는데 제외 조건이 있습니다.

user_id pur_date
aaa 2019-01-01
aaa 2019-01-05
aaa 2019-05-25
bbb 2019-05-26
bbb 2019-05-27
ccc 2019-06-29
ccc 2019-08-22
ddd 2019-07-11

 

제외 조건 : 구매 횟수가 1회인 회원 제외, 구매주기가 1일 이내인 경우 제외

 

결과는 아래 표와 같이 나와야합니다.

user_id pur_cnt
aaa 3
ccc 2

 

어떻게 쿼리를 작성해야할까요??

 

by 마농 [2020.05.06 13:42:46]
WITH t AS
(
SELECT 'aaa' user_id, '2019-01-01' pur_date FROM dual
UNION ALL SELECT 'aaa', '2019-01-05' FROM dual
UNION ALL SELECT 'aaa', '2019-05-25' FROM dual
UNION ALL SELECT 'bbb', '2019-05-26' FROM dual
UNION ALL SELECT 'bbb', '2019-05-27' FROM dual
UNION ALL SELECT 'ccc', '2019-06-29' FROM dual
UNION ALL SELECT 'ccc', '2019-08-22' FROM dual
UNION ALL SELECT 'ddd', '2019-07-11' FROM dual
)
SELECT a.user_id
     , COUNT(*) pur_cnt
  FROM t a
     , t b
 WHERE b.user_id (+) = a.user_id
   AND b.pur_date(+) = TO_CHAR(TO_DATE(a.pur_date, 'yyyy-mm-dd') - 1, 'yyyy-mm-dd')
   AND b.pur_date IS NULL    -- 1일 이내 구매 제외
 GROUP BY a.user_id
HAVING COUNT(*) > 1          -- 1건 구매 제외
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입