2015-12-15 45 views
0

我在我的表中有一個time_part列,它的時間格式像13:24。我想按每10分鐘的time_part進行分組。我如何將時間分組10分鐘。ORACLE - Group By Ten Minutes

下面是查詢:

SELECT substr(tran_time, 1, 2) || ':' || substr(tran_time, 3, 2) as time_part, recon_date

這是我的表和tran_time被= 'HHMMSS':

time_part tran_time recon_date data 
10:14  101425 13/12/2015 a 
22:29  222939 13/12/2015 b 
22:23  222342 13/12/2015 x 
00:46  004615 13/12/2015 d 
16:22  162259 13/12/2015 e 
12:13  121344 13/12/2015 f 
12:14  121410 13/12/2015 g 
12:10  121008 13/12/2015 b 
21:17  211732 13/12/2015 f 
20:25  202511 13/12/2015 r 

實施例輸出應該是這樣的

trantime count(*) 
000101  5 
001101  4 
002101  13 
. 
. 
. 
230101  5 
231101  23 
+1

提取分鐘部分,併除以10. – jarlh

+0

'TIME_PART'和'RECON_DATE'是否爲字符串值?如果不是,爲什麼要將它們分開? –

+0

time_part的數據類型是char,recon_date的數據類型是date。 – serdanarik

回答

1

提取派生表中的小時加10分鐘部分。然後做GROUP BY外部表:

select 10_min_part, count(*) 
from 
(
SELECT substr(tran_time, 1, 3) as 10_min_part 
from tablename 
) dt 
group by 10_min_part 

在選擇列表中,您可以Concat的00110_min_part。 (現在我不記得甲骨文請問是怎麼...)

+0

但是OP表示'recon_date'是一個DATE數據類型。這意味着'substr'不是必需的,只需在日期使用'TO_CHAR'。 –

0
  • 首先,這是一個不好的設計來存儲單獨時間部分字符串

  • 其次,日期總是有日期和時間元素。您所需要做的就是從日期中提取時間部分,並根據需要使用TO_CHAR和所需的格式型號

在您的評論說,time_part's data type is char , recon_date's data type is date,這意味着,recon_date有日期和時間元素。因此,您不需要SUBSTR,只需在日期列中使用TO_CHAR即可。

SELECT TO_CHAR(recon_date, 'mi'), COUNT(*) 
FROM your_table 
GROUP BY TO_CHAR(recon_date, 'mi');