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 41097 게시물 읽기
No. 41097
요일, 시간대별 통계
작성자
차태식
작성일
2016-03-14 14:30
조회수
7,814

 테이블 A에 다음과 같이 데이터가 존재합니다.

 

스키마

 

ID NUMBER
REG_DATE CHAR(14)

 

데이터

 

ID REG_DATE
50020 20160131230151
50021 20160201124530
50022 20160205190811
50023 20160211161821
50024 20160215220104
50025 20160225140224
50026 20160305094255

 

아래와 같은 결과를 얻고 싶은데 방법을 모르겠네요.

고수님들의 조언 부탁드립니다.

감사합니다.

 

 

 
00~01 0 0 0 0 0 0 0
01~02 0 0 0 0 0 0 0
02~03 0 0 0 0 0 0 0
03~04 0 0 0 0 0 0 0
04~05 0 0 0 0 0 0 0
05~06 0 0 0 0 0 0 0
06~07 0 0 0 0 0 0 0
07~08 0 0 0 0 0 0 0
08~09 0 0 0 0 0 0 0
09~10 0 0 0 0 0 1 0
10~11 0 0 0 0 0 0 0
11~12 0 0 0 0 0 0 0
12~13 1 0 0 0 0 0 0
13~14 0 0 0 0 0 0 0
14~15 0 0 0 1 0 0 0
15~16 0 0 0 0 0 0 0
16~17 0 0 0 1 0 0 0
17~18 0 0 0 0 0 0 0
18~19 0 0 0 0 0 0 0
19~20 0 0 0 0 1 0 0
20~21 0 0 0 0 0 0 0
21~22 0 0 0 0 0 0 0
22~23 1 0 0 0 0 0 0
23~24 0 0 0 0 0 0 1

 

 

 

이 글에 대한 댓글이 총 2건 있습니다.

WITH t AS
(
SELECT 50020 id, '20160131230151' reg_date FROM dual
UNION ALL SELECT 50021, '20160201124530' FROM dual
UNION ALL SELECT 50022, '20160205190811' FROM dual
UNION ALL SELECT 50023, '20160211161821' FROM dual
UNION ALL SELECT 50024, '20160215220104' FROM dual
UNION ALL SELECT 50025, '20160225140224' FROM dual
UNION ALL SELECT 50026, '20160305094255' FROM dual
)
SELECT a.시간
     , NVL(b.월, 0) 월
     , NVL(b.화, 0) 화
     , NVL(b.수, 0) 수
     , NVL(b.목, 0) 목
     , NVL(b.금, 0) 금
     , NVL(b.토, 0) 토
     , NVL(b.일, 0) 일
  FROM (SELECT LPAD(LEVEL-1, 2, '0') hh24
             , LPAD(LEVEL-1, 2, '0') ||'~'|| LPAD(LEVEL, 2, '0') 시간
          FROM dual
         CONNECT BY LEVEL <= 24
        ) a
     , (SELECT hh24
             , COUNT(DECODE(d, '2', 1)) 월
             , COUNT(DECODE(d, '3', 1)) 화
             , COUNT(DECODE(d, '4', 1)) 수
             , COUNT(DECODE(d, '5', 1)) 목
             , COUNT(DECODE(d, '6', 1)) 금
             , COUNT(DECODE(d, '7', 1)) 토
             , COUNT(DECODE(d, '1', 1)) 일
          FROM (SELECT SUBSTR(reg_date, 9, 2) hh24
                     , TO_CHAR(TO_DATE(reg_date, 'yyyymmddhh24miss'), 'd') d
                  FROM t
                -- WHERE 검색기간
                )
         GROUP BY hh24
        ) b
 WHERE a.hh24 = b.hh24(+)
 ORDER BY a.hh24, a.시간
;

마농(manon94)님이 2016-03-14 16:36에 작성한 댓글입니다.

와 엄청 머리 싸매고 있었는데 한 방에 해결됐네요.

마농 님 감사합니다.

차태식님이 2016-03-14 16:44에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41100쿼리 또는 DATA 구조 질문 드립니다. [1]
전규철
2016-03-16
7115
41099오라클 쿼리문 질문있습니다. (수정) [2]
오라클새내기
2016-03-15
7469
41098특정 문자열 검색후 특정 문자열 "값"추출 문의 [2]
정표
2016-03-15
7541
41097요일, 시간대별 통계 [2]
차태식
2016-03-14
7814
41096표현이 가능할지.... [1]
블루이글
2016-03-08
7491
41095오라클 조회시 속도 느림 [1]
민주가인
2016-03-08
8066
41091리버스 엔지니어링 개념 관련 질문입니다. [1]
조동건
2016-02-28
7580
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다