我有这样的表:
我需要找到file
列的日期值和按日期 - 文件日期值间隔分组。我试过这样:
select date,regexp_substr(FILE, '[[:DIGIT:]]{12}') FILEDATE from table
显示日期和文件日期。如何按日期文件日期间隔进行分组?:
答案 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' ) );