집계함수 관련 문의 드립니다~ 0 6 1,357

by 미소애비 [SQL Query] [2015.07.14 20:29:14]


안녕하세요.

집계함수 관련 문의 드립니다.

 

아래와 같은 데이터가 있습니다.

create table test (empno number, regdt varchar2(20));

insert into test values (1, '201506');
insert into test values (1, '201506');
insert into test values (2, '201507');
insert into test values (1, '201508');
insert into test values (1, '201508');
insert into test values (2, '201508');
insert into test values (3, '201509');
insert into test values (2, '201510');
insert into test values (1, '201510');

사원 별 날짜 별 로그인 이력이구요,

앞의 number 형이 사원번호, 뒤의 date가 로그인 날짜 입니다.

하루에 동일 사원이 여러번 로그인 해도 동일 기록이 여러번 남게 되구요....

 

이 데이터로,

날짜 별 유니크한 사원 수,

날짜 까지의 유니크한 사원의 누적 총 수

를 어떻게 구할 수 있을까요?

예를 들어 위 데이터의 경우 아래와 같은 결과를 얻고 싶습니다~

날짜 일 단위 로그인한 유니크 사원 수 누적 유니크 총 사원 수
201506 1 1
201507 2 2
201508 2 2
201509 1 3
201510 2 3

 

일 단위 로그인한 유니크 사원 수는 아래와 같은 쿼리로 쉽게 뽑겠는데,

select moddttm, count(distinct empno) as uniq_emp_cnt,
from test
group by regdt 
order by regdt 
;

누적 유니크 총 사원 수는 어렵네요~~~

고수님들 한 수 부탁 드립니다~~~

감사합니다.

by 겸댕2후니 [2015.07.14 22:44:44]

http://www.gurubee.net/lecture/2673

참조하시면, 쉽게해결하실 수 있을겁니다~


by 미소애비 [2015.07.15 16:05:20]

답변 감사합니다~~~


by swlee710 [2015.07.14 22:59:11]
-- 억지로 만들어 봤네요;;

select aa.regdt,cnt,sum(gb) over(order by aa.regdt) cnt2
from (
    select regdt,count(distinct empno) cnt
    from test
    group by regdt) aa,(select distinct regdt,decode(empno,null,0,1) gb
                        from test a
                        where not exists (select 1 from test b 
                                          where a.regdt > b.regdt
                                            and A.EMPNO = b.empno)) bb
    where aa.regdt = bb.regdt (+)
order by aa.regdt;

 


by 미소애비 [2015.07.15 16:05:07]

답변 감사합니다~~~


by 마농 [2015.07.15 07:03:34]
SELECT regdt
     , COUNT(DISTINCT empno) cnt1
     , SUM(COUNT(DECODE(rn, 1, 1))) OVER(ORDER BY regdt) cnt2
  FROM (SELECT empno, regdt
             , ROW_NUMBER() OVER(PARTITION BY empno ORDER BY regdt) rn
          FROM test
        )
 GROUP BY regdt
 ORDER BY regdt
;

 


by 미소애비 [2015.07.15 16:05:12]

답변 감사합니다~~~

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