2014-12-29 3 views
0

하루에 1 시간마다 수신되는 데이터를 얻기 위해 쿼리를 작성했습니다.분 단위로 Oracle 그룹

SELECT To_CHAR(A.req_start_time , 'DD/MM/YYYY HH24') as input , count(A.REQUEST_ID) 
FROM ILBULK.SAS_RE_TASK_MESSAGE A,ILBULK.SAS_RE_REQUEST_MESSAGE 
WHERE A.NE_TYPE = 'HLR' 
LIKE '%Synchronous%' 
AND A.REQUEST_ID = ILBULK.SAS_RE_REQUEST_MESSAGE.REQUEST_ID and A.REQ_START_TIME > to_DATE ('12/26/2014 00', 'MM/DD/YYYY HH24') and A.REQ_START_TIME < to_DATE('12/27/2014 00', 'MM/DD/YYYY HH24') 
GROUP BY To_CHAR(A.REQ_START_TIME, 'DD/MM/YYYY HH24'); 

내가

26/12/2014 02 13823 
26/12/2014 14 4681 
26/12/2014 12 2939 
26/12/2014 18 457 
26/12/2014 03 34327 
26/12/2014 04 15673 
26/12/2014 19 28885 
26/12/2014 06 70699 
26/12/2014 10 10743 

지금 내가 오름차순으로 정렬 매 순간에 대한 데이터를 얻으려면 다음과 같은 반응을 얻고있다가, 나는 시간 만 작업의 속삭임을 분할하기 위해 노력했다. 어떻게해야합니까?

답변

1

to_char(A.req_start_time , 'DD/MM/YYYY HH24:MI')을 사용하십시오. 여기서 MI은 분의 부분입니다. 과 GROUP BY 절에 같은 것을 추가하십시오. 예를 들어

SELECT To_char(A.req_start_time, 'DD/MM/YYYY HH24:MI') AS input, 
     Count(A.request_id) 
FROM ilbulk.sas_re_task_message A, 
     ilbulk.sas_re_request_message 
WHERE A.ne_type = 'HLR' LIKE '%Synchronous%' 
     AND A.request_id = ilbulk.sas_re_request_message.request_id 
     AND A.req_start_time > To_date ('12/26/2014 00', 'MM/DD/YYYY HH24') 
     AND A.req_start_time < To_date('12/27/2014 00', 'MM/DD/YYYY HH24') 
GROUP BY To_char(A.req_start_time, 'DD/MM/YYYY HH24:MI'); 

,

SQL> SELECT to_char(SYSDATE, 'DD/MM/YYYY HH24:MI') GRP_MIN 
    2 FROM DUAL 
    3 GROUP BY to_char(SYSDATE, 'DD/MM/YYYY HH24:MI') 
    4/

GRP_MIN 
---------------- 
29/12/2014 11:50 

SQL> 
1

귀하의 쿼리는 날짜/시간 문자열의 어떤에서 분을 포함한 것으로 표시되지 않습니다.

ORDER BY to_date(input, 'DD/MM/YYYY HH24:MI') 

당신이 날짜 패턴 YYYY를 사용하는 경우/MM/DD HH24 : 당신이 날짜로 다시 입력 필드를 변환해야합니다, 주문 위해

'DD/MM/YYYY HH24:MI' - where MI represents minutes 

다음과 같은 패턴을 시도 할 수 : MI, 날짜/시간과 같은 순서로 문자열이 나오므로 변환이 필요하지 않습니다. 오라클에서는 오름차순 정렬을 사용 합니다만 원하는 경우 명확성을 위해 끝에 ASC를 추가 할 수 있습니다. 당신이 자정 이후 분 경우

,이 같은 필요합니다 : - 분 60으로 나누기

TO_NUMBER(TO_CHAR(input, 'SSSSS'))/60 

위에서을 SSSSS 자정 이후의 초를 나타냅니다.

-1

나는 그것을 스스로 알아 냈습니다. :) 여기에 새 쿼리가 있습니다

SELECT To_CHAR(A.req_start_time , 'HH24:MI:SS') as input , count(A.REQUEST_ID) 
FROM ILBULK.SAS_RE_TASK_MESSAGE A,ILBULK.SAS_RE_REQUEST_MESSAGE 
WHERE A.NE_TYPE = 'HLR' 
--and ILBULK.SAS_RE_REQUEST_MESSAGE.PROTOCOL LIKE '%SAS%' --and ILINK.SAS_RE_REQUEST_MESSAGE.PROTOCOL LIKE '%Synchronous%' 
AND A.REQUEST_ID = ILBULK.SAS_RE_REQUEST_MESSAGE.REQUEST_ID and A.REQ_START_TIME > to_DATE ('12/26/2014 00', 'MM/DD/YYYY HH24') and A.REQ_START_TIME < to_DATE('12/27/2014 00', 'MM/DD/YYYY HH24') 
GROUP BY To_CHAR(A.REQ_START_TIME, 'HH24:MI:SS'); 
+0

아니요, 쿼리는'초 단위로도 '그룹화됩니다. 귀하의 요구 사항은 '분'에만 해당됩니다. 그리고 내 대답은 당신이 필요로하는 것입니다. –

관련 문제