2010-08-19 51 views
3

給定一個表格,其中包含一列字符串「timestamps」(yyyyMMddHHmmssSSS格式),我想子字符串的前8個字符,並獲得有多少行有該子字符串,分組結果。Oracle SQL查詢計數組按時間戳子串

採樣數據...

TIMESTAMP 
20100802123456123 
20100803123456123 
20100803123456123 
20100803123456123 
20100804123456123 
20100805123456123 
20100805123456123 
20100805123456123 
20100805123456123 
20100806123456123 
20100807123456123 
20100807123456123 

...和預期的結果...

SUBSTRING, COUNT 
20100802, 1 
20100803, 3 
20100804, 1 
20100805, 4 
20100806, 1 
20100807, 2 

我知道這應該是很容易的,但我並沒有在任何時刻運氣。

+2

如果您將其保存爲'DATE',那麼你可以使用'TRUNC(date_column)' – 2010-08-19 23:57:36

回答

7

我沒有一個數據庫來測試,但好像你正在尋找

select 
    substr(timestamp, 1, 8), 
    count(*) 
from 
    my_table 
group by 
    substr(timestamp, 1, 8); 
+0

我認爲這可能會訣竅。非常感謝你。我試圖做substring()作爲YMD,然後由YMD分組。 – krick 2010-08-20 00:12:55