4일 연속 출석체크 조회 후 특별 포인트 후에 다시 4일체크 어떻게 확인하면 좋을까요 0 1 2,637

by 데이터af [Oracle 기초] [2020.04.15 15:18:00]


안녕하세요 

이번에 출석체크 기능을 구현하게 되었는데요 . 연속 4일 출석체크 여부를 어떻게 조회할까 고민되서요 

 

테이블 명 : attendJoin 

memberNo  point  insDt

1323             7    20200415

1323             7    20200416

1323             7    20200417

1323             7    20200418

=> 4일연속 인경우 5번째는 700포인트를 줍니다. 

1323             700 20200419

 

이 경우 어떻게 조회를 해야할지 고민이 됩니다. 

1. 해당 당일날짜 에서 -4에서 오늘까지의 데이터를 조회하면 될거 같은데 중간에 700 포인트를 주고 나서 20200420일부터  다시 5일체크를 해야하는데 이건 쿼리로 불가능할까요 ...  

 

by 마농 [2020.04.16 01:04:55]
--INSERT INTO attendJoin(memberNo, point, insDt)
SELECT :v_memberNo                  AS memberNo
     , DECODE(COUNT(*), 4, 700, 7)  AS point
     , TO_CHAR(sysdate, 'yyyymmdd') AS insDt
  FROM attendJoin
 WHERE insDt >= TO_CHAR(sysdate - 4, 'yyyymmdd')
   AND insDt <= TO_CHAR(sysdate - 1, 'yyyymmdd')
   AND point = 7
   AND memberNo = :v_memberNo
HAVING NOT EXISTS (SELECT 1    -- 이미 로그인 한 자료는 제외 --
                     FROM attendJoin
                    WHERE memberNo = :v_memberNo
                      AND insDt = TO_CHAR(sysdate, 'yyyymmdd')
                   )
;

 

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