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 40293 게시물 읽기
No. 40293
총기간 일수 계산인데 중복 날짜 제외 도와주세요
작성자
이경남(antipig)
작성일
2013-10-31 14:58ⓒ
2013-10-31 15:02ⓜ
조회수
8,379

 

안녕하세요~  눈팅으로 도움만 받다가 
이번엔 없어서 직접 씁니다 ^^
 
 
평가번호 회차시작일자 종료일자 이렇게 컬럼이있고
 
한 평가번호에    여러 회차가 있습니다.
 
평가번호당 소요일수 합계 구하는데 기간이 겹칠수도 있는데
중복된  기간을 제거해서 세어야 합니다 
종료일자가 마구잡이예요
 
일자랑 평가번호는 바차~  회차는  숫자예요
 종료일자입력안된건 '00010101' 로 입력되어있는데 오늘날짜로 계산되구요
 
평가번호  회차  시작일              종료일
1001           1      20130102     20130120
1001           2     20130103      20130117
1001           3    20130125       20130201
2001           1    20130901      00010101
2001           2    20130823      20130905
 
 
원하는 결과 -  오늘이 10월31일이므로 
 
평가번호     소요일자
1001             27
1002             70
 
 
 
 사실 공휴일도 빼야합니다만 
 
이것도 하기 힘들어서요 
 
이 글에 대한 댓글이 총 2건 있습니다.

WITH t AS
(
SELECT '1001' eno, 1 seq, '20130102' sdt, '20130120' edt FROM dual
UNION ALL SELECT '1001', 2, '20130103', '20130117' FROM dual
UNION ALL SELECT '1001', 3, '20130125', '20130201' FROM dual
UNION ALL SELECT '2001', 1, '20130901', '00010101' FROM dual
UNION ALL SELECT '2001', 2, '20130823', '20130905' FROM dual
)
, c AS
(
-- 달력테이블 임의 생성 --
-- 별도 달력테이블을 관리한다면 토,일뿐 아니라 국경일등 휴일도 제외 가능합니다.
SELECT TO_CHAR(sdt + LEVEL - 1, 'yyyymmdd') dt
     , TO_CHAR(sdt + LEVEL - 1, 'd') d
  FROM (SELECT TO_DATE('201301', 'yyyymm') sdt FROM dual) -- 시작년월지정
 CONNECT BY LEVEL <= sysdate - sdt + 1
)
SELECT t.eno
     , COUNT(DISTINCT c.dt) cnt
  FROM t, c
 WHERE c.dt BETWEEN t.sdt AND t.edt
   AND c.d NOT IN ('1', '7') -- 휴일제외
 GROUP BY t.eno
 ORDER BY t.eno
;

마농(manon94)님이 2013-10-31 17:57에 작성한 댓글입니다.

 마농님!!  감사합니다.  저희 캘런더 테이블이 있어서 올려주신 쿼리에서 c테이블만 수정했더니 잘됩니다 며칠 머리썼는데 일수 구하고 휴일 뺄 생각만했지 캘린더 퇴이블로 조인해서 중복 뺄 생각은 못했었는데 ....   

 

이경남님이 2013-11-01 10:01에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40296잡스케쥴 등록.(한달에 2번) 가능할까요. [1]
새하정
2013-11-01
6308
40295서버이전후 오렌지 클라이언트에서 파티션 확인여부. [1]
득용
2013-11-01
6213
40294쿼리 튜닝 문의요~~~ [1]
경호선
2013-11-01
7433
40293총기간 일수 계산인데 중복 날짜 제외 도와주세요 [2]
이경남
2013-10-31
8379
40292사용하지 않는 테이블 정리 [1]
이후영
2013-10-30
6236
40290일련번호를 부여하려 합니다. [2]
양충식
2013-10-25
6966
40289clob 타입의 칼럼에서 일치하는 단어만 찾기 , 연관단어 제외 [2]
아롱
2013-10-24
5872
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다