안녕하세요 5

by 쭈남편 [2012.10.25 14:58:29]


안녕하세요
질문드립니다.
초보입니다.

여기저기 답변을 다보고 공부하긴 했는데 딱 맞아떨어지는걸 못찾아서 
결국 글을 올려 질문드립니다.

제가 찾고자 하는것은 일요일부터~토요일까지

주수(week)별로 직원의 건수를 찾고 싶습니다.

ex) 11주차 2012.3.11(일요일) ~ 2012.03.17(토)까지 총건수
   또한 일자별(oudate별) 건수

--> 밑에 처럼 짜보긴 했는데요..
 여기서 IW가 주수를 나타내는게 맞죠? 근데 +1을 해줘야 날짜가 딱 맞더라구요.

IW, W, WW등의 쓰임세를 정확히 잘 모르겠고
혹시 계층형으로 CONNECT BY 써서

2012년 3월   
  3월11일 5건
  3월12일 6건..
2012년 4월
  4월1일~4월7일 ...

등으로 나타내고 싶은데 가능한지 여쭙습니다.

고수님들의 좋은 고견 부탁드립니다. ㅠㅜ


 
 select t.jusu "week(주수)"
    , to_char(t.outdate,'yyyy-mm-dd')
   ,  decode(to_char(t.outdate,'d'),'1','일요일','2','월요일','3','화요일','4','수요일','5','목요일','6','금요일','토요일')   "요일"
    , count(*)   "건수"
   from(
  select distinct
         z.empno
  , to_char(z.outdate + 1, 'IW')  jusu
      , z.outdate
     from
  (
    select  a.empno     empno
       ,  a.outdate     outdate
       from dept a
         where a.outdate between to_date('20120311','yyyymmdd')
        and to_date('20121020','yyyymmdd')
        )z
       ) t
   group by  t.jusu 
      , to_char(t.outdate,'yyyy-mm-dd')
          ,  decode(to_char(t.outdate,'d'),'1','일요일','2','월요일','3','화요일','4','수요일','5','목요일','6','금요일','토요일')  
by 부쉬맨 [2012.10.25 15:20:51]
비슷한게있던거같은데
한번보시길
http://www.gurubee.net/article/57230

by 아발란체 [2012.10.25 16:20:33]

@.@)/ 데이타 샘플을 10건 정도 올려주시고, 이렇게 출력 되었으면 좋겠다...
라고 글을 써주시면 답변이 링크가 아닌 쿼리로 답변이 달릴 확률이 높습니다 ~ :)


by 마농 [2012.10.25 16:31:10]

주차라는 개념이 모호하여
월요일 기준인지 일요일 기준인지에 따라 다르고
같은 주차일지라도 달이 다르거나 해가 달라지는 경우도 존재하며
해가 바뀌는 경우의 주차가 전년도 마지막 주차에 포함될지 다음해 1주차에 포함될지도 달라집니다.
이런 모호한 상황에서 모호한 질문에 답하기는 상당히 어렵습니다.


by 마농 [2012.10.25 18:22:12]
-- 날짜와 주차, 요일 정보에 이해를 돕기 위한 확인 쿼리
WITH t AS
(
SELECT TRUNC(sysdate, 'yy') + LEVEL - 1 dt
  FROM dual
 CONNECT BY LEVEL <= 365
)
SELECT dt
     , TO_CHAR(dt, 'ddd') ddd
     , TO_CHAR(dt, 'yyyymm') ym
     , TO_CHAR(dt, 'iw')  iw  -- 월요일 기준(1월1일이 (월~목)이면 1주차
                              -- 1월1일이 (화수목)인경우 전년도 말일이 이듬해 1주차가 되는 구조
                              -- 1월1일이 (금토일)이면 전년도 마지막 주차(52또는53)
     , TO_CHAR(dt, 'ww')  ww  -- 매년 1월1일 기준(1월1일~1월7일까지 1주차)
     , TO_CHAR(dt, 'w')   w   -- 매월 1일 기준(1일~7일까지 1주차)
     , TO_CHAR(dt, 'd')   d   -- 요일(1~7)
     , TO_CHAR(dt, 'dy')  dy  -- 요일(일~토)
     , TO_CHAR(dt, 'day') day -- 요일(일요일~토요일)
  FROM t
;

by 쭈남편 [2012.10.31 15:29:41]

너무 감사합니다...ㅠㅜ 클럽에 가입한지 얼마안되서 아직 질문드리는 요령을 잘 몰라서 두서없이 한거 같은데
명쾌히 알려주셔서 감사합니다.

잘배우고 익혀서 저도 베풀수 있는날이 오면 열심히 베풀겠습니다.

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