2011-03-14 22 views
6


Sayım sayısını ve grubunu belirli bir süre (ay, hafta, gün, saat, ...) olarak seçmek istiyorum. Yani örneğin, sıra sayısını seçmek ve onları 24 saat gruplamak istiyorum.
Benim tablom aşağıdaki gibi oluşturulur. Tarih zaman damgası.SQL bir süreye göre gruplama ve gruplama (zaman damgası)

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); 


Bu sorguyu denedim. Süre uzunluğuna bağlı olarak. Ama şimdi nasıl gruplayabilirim.

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


Ama nasıl olabilir Ben grup şimdi TIME_PERIOD + tarih?

+0

'u beğendiğinizde bunları birleştirebilirsiniz http://stackoverflow.com/search?q=group+day –

cevap

17

TO_CHAR işleviyle gruplayabilirsiniz. X biçim özelliğidir

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

...:

  • YYYY = 4 basamaklı Yıl ayda yılın
  • MM = Ay
  • DD = Gün
  • WW = Hafta
  • HH24 = Saat başı