database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40005 게시물 읽기
No. 40005
카운트 통계 구하려고 하는데..급하게 하려니 도움요청합니다~
작성자
질문해요
작성일
2013-02-12 18:17ⓒ
2013-02-12 18:48ⓜ
조회수
6,534

user_table(사용자테이블)

id(사용자아이디) name dept__cd(부서코드)
0001 aaa 00A0
0002 bbb 00B0
0003 cccc 00B0
0004 ddd 00A0
0005 eee 00B0
0006 fff 00D0
0007 ggg 00C0
0008 hhh 00B0
0009 iiiii 00C0
0010 jjjjj 00C0
0011 aabb 00D0
0012 aaccc 00D0

 

dept_table(부서테이블)

dept__cd(부서코드) dept__name dept_level(부서레벨) dept_order_by_no(부서 정렬순번) dept_high_level(상위부서코드)
00A0 최상급부서 1 1  
00B0 중급부서1 2 1 00A0
00C0 중급부서2 2 2 00A0
00D0 하급부서 3 1 00B0

 

login_table(로그인정보테이블)

id(사용자아이디) login_date(로그인날짜)
0001 2012-12-30
0002 2012-12-30
0003 2013-01-01
0001 2013-01-01
0001 2013-01-01
0002 2013-01-01
0002 2013-01-01
0002 2013-01-01
0003 2013-01-01
0004 2013-01-01
0004 2013-01-01
0005 2013-01-01
0003 2013-01-01
0005 2013-01-01
0012 2013-01-01
0011 2013-01-01
0011 2013-01-01
0009 2013-01-01
0009 2013-01-01
0009 2013-01-01
0007 2013-01-01
0006 2013-01-01
0001 2013-01-01
0007 2013-01-01
0006 2013-01-01
0001 2013-01-01
0002 2013-01-01
0003 2013-01-01
0010 2013-01-01
0001 2013-01-01
0002 2013-01-01
0002 2013-01-01
0002 2013-01-01
0003 2013-01-01
0004 2013-01-01
0004 2013-01-01
0005 2013-01-01
0003 2013-01-01
0005 2013-01-01
0012 2013-01-01
0011 2013-01-01
0011 2013-01-01
0009 2013-01-01
0010 2013-01-01
0009 2013-01-01
0007 2013-01-01
0006 2013-01-01
0001 2013-01-01
0007 2013-01-01
0006 2013-01-01

 

 

결과적으로 날짜 조건값으로 20130101~ 20130130

결과테이블과 같이 구해야 하는데요..

부서테이블에서 계층구조로가져오긴하는데 .. sub 쿼리 하자니 느릴것도 같고해서.. 도움요청합니다~

부서 사용자 수 로그인 수 사용User당
평균 로그인 수
최상급부서     2 6 3
  중급부서1   4 18 4.5
    하급부서 3 10 3.33
  중급부서2   3 11 3.67
이 글에 대한 댓글이 총 2건 있습니다.

SELECT dept1
     , dept2
     , dept3
     , cnt1
     , cnt2
     , ROUND(cnt2 / cnt1, 2) cnt3
  FROM (SELECT ROWNUM rn
             , dept__cd
             , DECODE(dept_level, 1, dept__name) dept1
             , DECODE(dept_level, 2, dept__name) dept2
             , DECODE(dept_level, 3, dept__name) dept3
          FROM dept_table
         START WITH dept_level = 1
         CONNECT BY PRIOR dept__cd = dept_high_level
         ORDER SIBLINGS BY dept_order_by_no
        ) a
     , (SELECT u.dept__cd
             , COUNT(DISTINCT u.id) cnt1
             , COUNT(*) cnt2
          FROM user_table u
             , login_table l
         WHERE u.id = l.id
           AND l.login_date BETWEEN '2013-01-01' AND '2013-01-30'
         GROUP BY u.dept__cd
        ) b
 WHERE a.dept__cd = b.dept__cd(+)
 ORDER BY a.rn
;

마농(manon94)님이 2013-02-14 13:47에 작성한 댓글입니다.

마농님 넘 감사합니다 ^^

제 질문이 좀 모잘라 그렇지 쿼리가 많은 도움이 되었습니다 ~~~ 넘 감사드려요~

질문해요님이 2013-02-15 18:54에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40008콤마로된데이타 ,포맷변경가능한가여. [3]
궁금구금
2013-02-14
5186
40007툴에 관한 문의를 드립니다..SQL GATE [3]
새하정
2013-02-14
5508
40006시간차이 구하는 쿼리 좀 부탁드려요? [1]
쫑군
2013-02-12
5901
40005카운트 통계 구하려고 하는데..급하게 하려니 도움요청합니다~ [2]
질문해요
2013-02-12
6534
40004datapump 파일을 다른 폴더에 생성하기
핸시기
2013-02-07
5751
40003테이블 칼럼 값이 2줄일때 1줄로 바꾸는방법 알려주세요 [1]
조윤기
2013-02-07
5706
40002묶어서 표현하고 싶은데 잘 안되네요.. [2]
Jinho Jeong
2013-02-07
5155
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다