5 일 연속 로그 인 한 사용자 조회
1592 단어 ORACLE
2. 관심 2: 하루 에 여러 번 로그 인 할 수 있 습 니 다.
테스트 데이터
CREATE TABLE t(user_id varchar2(50), access_time date);
insert into t values('a',sysdate-10);
insert into t values('a',sysdate-9);
insert into t values('a',sysdate-8);
insert into t values('a',sysdate-7);
insert into t values('a',sysdate-6);
insert into t values('b',sysdate-11);
insert into t values('b',sysdate-9);
insert into t values('b',sysdate-8);
insert into t values('c',sysdate-10);
insert into t values('c',sysdate-9);
insert into t values('c',sysdate-8);
insert into t values('c',sysdate-7);
insert into t values('c',sysdate-6);
insert into t values('c',sysdate-1);
해결 사고 1: 분석 함수 사용
SELECT distinct UID
FROM (SELECT UID,
LAG (access_dt, 4) OVER (PARTITION BY UID ORDER BY access_dt)
prev_access_dt, access_dt
FROM ( SELECT UID, TRUNC (access_time) access_dt
FROM t
GROUP BY UID, TRUNC (access_time)))
WHERE prev_access_dt IS NOT NULL AND (access_dt - prev_access_dt) = 4;
해결 방향 2: rownum 사용
SELECT DISTINCT user_name
FROM ( SELECT user_name, TRUNC (access_time) access_dt
FROM t
GROUP BY user_name, TRUNC (access_time)
ORDER BY user_name, TRUNC (access_time))
GROUP BY user_name, TO_CHAR (access_dt, 'J') - rownum
HAVING COUNT (*) > 4;