2015-12-15 3 views
0

У меня есть стол времени в моей таблице, который имеет формат времени, такой как 13:24. Я хочу группировать по time_part за 10 минут. Как я могу группировать время на 10 минут.ORACLE - группа за десять минут

Вот запрос:

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

Вот мой стол и tran_time будет = 'ччммсс':

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

Extract минутную часть, и делим на 10. – jarlh

+0

ли 'TIME_PART' и строковые значения' RECON_DATE'? Если нет, то почему вы их разделяете? –

+0

Тип данных time_part - char, тип данных recon_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 

В списке SELECT, вы можете Concat 001 к 10_min_part. (Прямо сейчас я не могу вспомнить, как Oracle делает это ...)

+0

Но OP сказал, что 'recon_date' является типом данных DATE. Это означает, что 'substr' не требуется и просто используйте' TO_CHAR' в день. –

0
  • Во-первых, это плохой дизайн для хранения времени часть отдельно в качестве строки.

  • Во-вторых, a ДАТА всегда имеет элементы даты и времени. Все, что вам нужно сделать, это извлечь временную часть с даты по мере необходимости, используя 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'); 
Смежные вопросы