데이터 조회 결과에서 특정 단어로 묶인 갯수 구하기 0 3 1,358

by 조새롬 [Oracle 기초] [2014.01.22 11:13:53]


 SELECT LEVEL lv, 
			 TO_CHAR(TO_DATE ( '2013/11/15' , 'YYYY/MM/DD' )-1 + LEVEL , 'YYYY/MM/DD') AS DAY_NUM, 
			 TO_CHAR(TO_DATE ( '2013/11/15' , 'YYYY/MM/DD' )-1 + LEVEL , 'DY') AS DAY_CHAR
			 FROM dual CONNECT BY (TO_DATE ( '2014/01/20' , 'YYYY/MM/DD' )-TO_DATE ( '2013/11/15' , 'YYYY/MM/DD' ))+1 >= LEVEL

:: 조회 결과

1 2013/11/15 금
2 2013/11/16 토
3 2013/11/17 일
4 2013/11/18 월
5 2013/11/19 화
6 2013/11/20 수
7 2013/11/21 목
8 2013/11/22 금
9 2013/11/23 토
10 2013/11/24 일
11 2013/11/25 월
12 2013/11/26 화
13 2013/11/27 수
14 2013/11/28 목
15 2013/11/29 금
16 2013/11/30 토
17 2013/12/01 일
18 2013/12/02 월
19 2013/12/03 화
20 2013/12/04 수
21 2013/12/05 목
22 2013/12/06 금
23 2013/12/07 토
24 2013/12/08 일
25 2013/12/09 월
26 2013/12/10 화
27 2013/12/11 수
28 2013/12/12 목
29 2013/12/13 금
30 2013/12/14 토
31 2013/12/15 일
32 2013/12/16 월
33 2013/12/17 화
34 2013/12/18 수
35 2013/12/19 목
36 2013/12/20 금
37 2013/12/21 토
38 2013/12/22 일
39 2013/12/23 월
40 2013/12/24 화
41 2013/12/25 수
42 2013/12/26 목
43 2013/12/27 금
44 2013/12/28 토
45 2013/12/29 일
46 2013/12/30 월
47 2013/12/31 화
48 2014/01/01 수
49 2014/01/02 목
50 2014/01/03 금
51 2014/01/04 토
52 2014/01/05 일
53 2014/01/06 월
54 2014/01/07 화
55 2014/01/08 수
56 2014/01/09 목
57 2014/01/10 금
58 2014/01/11 토
59 2014/01/12 일
60 2014/01/13 월
61 2014/01/14 화
62 2014/01/15 수
63 2014/01/16 목
64 2014/01/17 금
65 2014/01/18 토
66 2014/01/19 일
67 2014/01/20 월


:: 원하는 결과

월별에 해당 월의 날짜(일) 갯수 구하기
2013/11월의 갯수, 2013/12월의 갯수, 2014/01월의 갯수

::단,
2013/11월, 2013/12, 2014/01월은 정해진 범위가 아니고 사용자에게 입력받을 범위라서
계속 변경될것입니다.

사용자가 2013/10/23 ~ 2015/03/05 까지를 입력하면
2013/10월부터 2015/03월까지 달의 일별 갯수를 구하는 것입니다.
by 조새롬 [2014.01.22 11:20:38]
SELECT LEVEL lv, 
			    TO_CHAR(TO_DATE ( '2013/11/15' , 'YYYY/MM/DD' )-1 + LEVEL , 'YYYY/MM/DD') AS DAY_NUM, 
			    TO_CHAR(TO_DATE ( '2013/11/15' , 'YYYY/MM/DD' )-1 + LEVEL , 'DY') AS DAY_CHAR
			    FROM dual CONNECT BY (TO_DATE ( '2014/01/20' , 'YYYY/MM/DD' )-TO_DATE ( '2013/11/15' , 'YYYY/MM/DD' ))+1 >= LEVEL

:: 조회 결과

1 2013/11/15 금
2 2013/11/16 토
3 2013/11/17 일
4 2013/11/18 월
5 2013/11/19 화
6 2013/11/20 수
7 2013/11/21 목
8 2013/11/22 금
9 2013/11/23 토
10 2013/11/24 일
11 2013/11/25 월
12 2013/11/26 화
13 2013/11/27 수
14 2013/11/28 목
15 2013/11/29 금
16 2013/11/30 토
17 2013/12/01 일
18 2013/12/02 월
19 2013/12/03 화
20 2013/12/04 수
21 2013/12/05 목
22 2013/12/06 금
23 2013/12/07 토
24 2013/12/08 일
25 2013/12/09 월
26 2013/12/10 화
27 2013/12/11 수
28 2013/12/12 목
29 2013/12/13 금
30 2013/12/14 토
31 2013/12/15 일
32 2013/12/16 월
33 2013/12/17 화
34 2013/12/18 수
35 2013/12/19 목
36 2013/12/20 금
37 2013/12/21 토
38 2013/12/22 일
39 2013/12/23 월
40 2013/12/24 화
41 2013/12/25 수
42 2013/12/26 목
43 2013/12/27 금
44 2013/12/28 토
45 2013/12/29 일
46 2013/12/30 월
47 2013/12/31 화
48 2014/01/01 수
49 2014/01/02 목
50 2014/01/03 금
51 2014/01/04 토
52 2014/01/05 일
53 2014/01/06 월
54 2014/01/07 화
55 2014/01/08 수
56 2014/01/09 목
57 2014/01/10 금
58 2014/01/11 토
59 2014/01/12 일
60 2014/01/13 월
61 2014/01/14 화
62 2014/01/15 수
63 2014/01/16 목
64 2014/01/17 금
65 2014/01/18 토
66 2014/01/19 일
67 2014/01/20 월


:: 원하는 결과

월별에 해당 월의 날짜(일) 갯수 구하기
2013/11월의 갯수, 2013/12월의 갯수, 2014/01월의 갯수

::단,
2013/11월, 2013/12, 2014/01월은 정해진 범위가 아니고 사용자에게 입력받을 범위라서
계속 변경될것입니다.

사용자가 2013/10/23 ~ 2015/03/05 까지를 입력하면
2013/10월부터 2015/03월까지 달의 일별 갯수를 구하는 것입니다.

by 조새롬 [2014.01.22 11:22:29]

질문이 입력이 잘 안되어서 댓글로 다시 질문드렸습니다

by 마농 [2014.01.22 13:17:31]
SELECT TO_CHAR(dt, 'yyyy/mm') ym
     , COUNT(*) cnt
  FROM (SELECT sdt + LEVEL - 1 dt
          FROM (SELECT TO_DATE('2013/11/15', 'yyyy/mm/dd') sdt
                     , TO_DATE('2014/01/20', 'yyyy/mm/dd') edt
                  FROM dual
                )
         CONNECT BY LEVEL <= edt - sdt + 1
        )
 GROUP BY TO_CHAR(dt, 'yyyy/mm')
 ORDER BY ym
;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입