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 39711 게시물 읽기
No. 39711
시간대별 합..날짜 기준 변경
작성자
변경
작성일
2012-10-30 01:21
조회수
6,042

안녕하십니까?

다름이 아니오라, 시간대별 합계 구하는 쿼리를 여기서 찾아서 작성하였습니다.

쿼리는 이상이 없으나, 오늘 날짜 기준이

아침 06:00 부터 다음날 05:59까지 가 오늘로 보고 있습니다.

아래 쿼리는 00 시부터 24시 까지 시간대별로 나오는 입니다.

기준을 06:00 ~ 다음날 05:59으로 변경해서 시간대별로 나오게 할수 있는지요?

 

- 아래 -

WITH A AS
(
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 23  AS QTY, '20121029000000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029010000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 240 AS QTY, '20121029020000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'BA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 12  AS QTY, '20121029030000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'BA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 33  AS QTY, '20121029040000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'BA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 235 AS QTY, '20121029050000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 560 AS QTY, '20121029050000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 780 AS QTY, '20121029060000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 980 AS QTY, '20121029070000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 100 AS QTY, '20121029070000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029070000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029080000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 220 AS QTY, '20121029090000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'DA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 222 AS QTY, '20121029090000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'DA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029090000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'DA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029100000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'DA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029110000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'DA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 110 AS QTY, '20121029120000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'DA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 43  AS QTY, '20121029130000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'DA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 567 AS QTY, '20121029130000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'FA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 789 AS QTY, '20121029140000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'FA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 675 AS QTY, '20121029140000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 21  AS QTY, '20121029150000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 342 AS QTY, '20121029150000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 909 AS QTY, '20121029160000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 565 AS QTY, '20121029170000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029170000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'BA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029180000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'BA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029190000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'BA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 342 AS QTY, '20121029200000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 180 AS QTY, '20121029210000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 332 AS QTY, '20121029220000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 21  AS QTY, '20121029220000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 232 AS QTY, '20121029230000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 225 AS QTY, '20121029240000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 980 AS QTY, '20121029240000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 76  AS QTY, '20121029240000' AS STARTTIME FROM DUAL UNION ALL             
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 123 AS QTY, '20121029240000' AS STARTTIME FROM DUAL UNION ALL                       
  SELECT 'DD' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 654 AS QTY, '20121030000000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'DD' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 123 AS QTY, '20121030010000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'DD' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 675 AS QTY, '20121030010000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 563 AS QTY, '20121030020000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 123 AS QTY, '20121030020000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 667 AS QTY, '20121030030000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'AA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 123 AS QTY, '20121030030000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 345 AS QTY, '20121030040000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 211 AS QTY, '20121030050000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 123 AS QTY, '20121030060000' AS STARTTIME FROM DUAL UNION ALL
  SELECT 'CA' AS MODEL_NUMBER ,'20121024' AS OUT_DATE, 222 AS QTY, '20121030060000' AS STARTTIME FROM DUAL
)
SELECT HH24
        ,MODEL_NUMBER
        ,cnt
        ,QTY
        ,STARTTIME
  FROM (
          SELECT b.hh24
                , A.MODEL_NUMBER
               , COUNT(a.STARTTIME) cnt
               , SUM(A.QTY) QTY
               , A.STARTTIME
              
            FROM a
               , (SELECT LPAD(ROWNUM-1,2,'0')  hh24 FROM a WHERE ROWNUM <= 24) b
           WHERE a.STARTTIME LIKE TO_CHAR(SYSDATE -6/24 ,'yyyymmdd') || b.hh24 || '%'          
           GROUP BY b.hh24, A.MODEL_NUMBER, A.STARTTIME
        )  
 WHERE 1=1
  -- AND HH24 IN ('06','07')
 ORDER BY HH24

 

조건에 'SYSDATE -6/24'  를 줘도 변함이 없고  LPAD(ROWNUM-1,2,'0')을 LPAD(ROWNUM-5,2,'0') 변경을 해도

원하는 기준(오늘)으로 나오질 안네요....

검토 부탁드립니다.

수고하세요

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

SELECT SUBSTR(a.starttime, 9, 2) hh24
     , a.model_number
     , COUNT(*) cnt
     , SUM(a.qty) qty
     , a.starttime
  FROM a
 WHERE a.starttime >= TO_CHAR(TRUNC(sysdate) - 18/24, 'yyyymmddhh24')
   AND a.starttime <  TO_CHAR(TRUNC(sysdate) +  6/24, 'yyyymmddhh24')
 GROUP BY a.starttime, a.model_number
 ORDER BY a.starttime
;

마농(manon94)님이 2012-10-30 12:58에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39714윈도우 오라클 폴더째 이전 가능할까요?
이상진
2012-10-30
4787
39713[너무 급합니다.]SYS.AUD$ 테이블을 8192(으)로 SYSTEM 테이블스페이스에서 확장할 수 없습니다 [4]
김덕호
2012-10-30
9108
39712오라클 문법이 궁금해요
최승환
2012-10-30
5100
39711시간대별 합..날짜 기준 변경 [1]
변경
2012-10-30
6042
39710컬럼 비교하여 맞으면 값 가져오기 [2]
김연태
2012-10-29
7570
39707group by 절 튜닝 질문 드립니다. [1]
김형준
2012-10-28
5678
39706ORA-01652 에러 해결 방법 없나요? [1]
박주영
2012-10-26
7865
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다