2011-03-14 6 views
6


기간 (월, 주, 일, 시간 등)을 기준으로 개수 및 그룹을 선택하고 싶습니다. 예를 들어, 행 수를 선택하고 24 시간 씩 그룹화하려고합니다.
다음과 같이 테이블이 생성됩니다. 날짜는 타임 스탬프입니다.일정 기간 (시간 소인)을 기준으로 SQL 선택 및 그룹화

CREATE TABLE MSG 
(
    MSG_ID decimal(22) PRIMARY KEY NOT NULL, 
    MSG_DATE timestamp, 
    FILE_REF varchar2(32), 
    FILE_NAME varchar2(64), 
    MSG_TYPE varchar2(2), 
); 
CREATE UNIQUE INDEX PK_FEI_MSG ON MSG(MSG_ID); 


이 쿼리를 사용해 보았습니다. 기간은 기간에 따라 다릅니다. 그러나 지금부터 어떻게 그룹화 할 수 있습니까?

SELECT substr(MSG_DATE, 1,length),COUNT(*) as total FROM MSG GROUP BY substr(MSG_DATE, 1, length) 


하지만 어떻게 수 I 그룹 지금 TIME_PERIOD을 +에서 날짜?

+0

http://stackoverflow.com/search?q=group+day 참조 –

답변

17

TO_CHAR 함수로 그룹화 할 수 있습니다. X는 형식 사양입니다

select to_char(msg_date, 'X') 
     ,count(*) 
    from msg 
group 
    by to_char(msg_date, 'X') 

... :

  • YYYY = 4 자리 연도 달 년의
  • MM = 월은
  • DD = 일
  • WW = 주
  • HH24 = 하루 중 시간

당신도 좋아할지라도 꽤 많이 결합 할 수 있습니다

관련 문제