2011-03-14 55 views
6


我想按一段時間(月,周,日,小時......)選擇計數和分組。因此,例如,我想選擇行數並按24小時分組。
我的表格創建如下。日期是時間戳。SQL select&group by period of time(timestamp)

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) 


但我怎麼能集團從現在+ TIME_PERIOD的日期?

+0

請參閱http://stackoverflow.com/search?q=group+day – 2011-03-14 10:33:40

回答

17

您可以通過TO_CHAR功能進行分組。

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

...其中X是格式規範:

  • YYYY = 4位數的年份
  • MM =一年的月
  • DD =日在一個月
  • WW =周
  • HH24 =一天中的小時

您可以將它們幾乎相結合,但是您喜歡