2015-04-20 4 views
1

У меня есть таблица вроде этого:Как я могу группировать по интервалу даты в двух столбцах?

enter image description here

enter image description here

Мне нужно найти дату значения file столбца и группу по дате-файл значения даты интервала. Я пробовал вот так:

select date,regexp_substr(FILE, '[[:DIGIT:]]{12}') FILEDATE from table 

Дата и дата выпуска даты. Как я группа по дате дата-файл интервал, как это может ?:

enter image description here

+1

что это за счет? Вы имеете в виду для заданной даты, сколько нет общего количества файлов: 3 файла есть для даты 5 на примере выше –

+0

Count - это строка. У меня есть 3 строки (date - filedate) = 5 дней. – phe

+0

У меня не было; можете ли вы подробнее рассказать об этом, например, ссылаясь на данные выше. –

ответ

1

Если значения в "DATE" и "FILE" колоннах будут иметь те же времена, то вы можете использовать:

SELECT "DATE" - TO_DATE(REGEXP_SUBSTR("FILE", '\d{14}', 1, 1), 'YYYYMMDDHH24MISS') AS "INTERVAL" 
     COUNT(1) AS "COUNT" 
FROM  TABLE_NAME 
GROUP BY "DATE" - TO_DATE(REGEXP_SUBSTR("FILE", '\d{14}', 1, 1), 'YYYYMMDDHH24MISS'); 

Если они будут иметь разные времена, то оберните выражения "INTERVAL" и GROUP BY в функции CEIL() (или FLOOR()) - поочередно вы можете TRUNC() даты перед вычитанием; например:

SELECT TRUNC("DATE") - TRUNC(TO_DATE(REGEXP_SUBSTR("FILE", '\d{14}', 1, 1), 'YYYYMMDDHH24MISS')) AS "INTERVAL" 
     COUNT(1) AS "COUNT" 
FROM  TABLE_NAME 
GROUP BY TRUNC("DATE") - TRUNC(TO_DATE(REGEXP_SUBSTR("FILE", '\d{14}', 1, 1), 'YYYYMMDDHH24MISS')); 
Смежные вопросы