2013-11-08 4 views
0

я получил TBL с отметкой времени (дд.мм.гггг HH24: MI: SS) и длительностью в миллисекундахСовокупных миллисекунды по часу

как можно агрегировать эти длительности пути, позволяю сказать, что час? Он должен сказать мне AVG миллисекунды в час.

SAMPLE:

Timestamp    Duration 
10.10.2010 12:30:20 200 
10.10.2010 12:59:10 400 

ВЫВОД:

Timestamp    Duration 
10.10.2010 12:00:00 300 
+0

Вы имеете в виду длительность присутствует внутри временной метки жала ?? или отдельной колонке? – SriniV

+0

продолжительность - отдельная колонка – user2428207

+0

Можете ли вы определить образцы ввода и желаемого выхода? – SriniV

ответ

1

Попробуйте что-то вроде этого:

SELECT TO_CHAR("Date", 'HH24'), AVG("Duration") FROM "Table" GROUP BY TO_CHAR("Date", 'HH24') 
1

Вы ищете ROUND и AVG

WITH DATASET 
    AS (SELECT TO_TIMESTAMP_TZ ('11/8/2013 1:16:22', 'MM/DD/YYYY HH24:MI:SS') AS TS, 
       200 AS DURATION 
     FROM DUAL 
     UNION ALL 
     SELECT TO_TIMESTAMP_TZ ('11/8/2013 1:16:22', 'MM/DD/YYYY HH24:MI:SS') AS TS, 
       100 AS DURATION 
     FROM DUAL 
     UNION ALL 
     SELECT TO_TIMESTAMP_TZ ('11/8/2013 2:16:22', 'MM/DD/YYYY HH24:MI:SS') AS TS, 
       300 AS DURATION 
     FROM DUAL 
     UNION ALL 
     SELECT TO_TIMESTAMP_TZ ('11/8/2013 3:16:22', 'MM/DD/YYYY HH24:MI:SS') AS TS, 
       500 AS DURATION 
     FROM DUAL 
     UNION ALL 
     SELECT TO_TIMESTAMP_TZ ('11/8/2013 4:16:22', 'MM/DD/YYYY HH24:MI:SS') AS TS, 
       600 AS DURATION 
     FROM DUAL 
     UNION ALL 
     SELECT TO_TIMESTAMP_TZ ('11/8/2013 4:16:22', 'MM/DD/YYYY HH24:MI:SS') AS TS, 
       700 AS DURATION 
     FROM DUAL) 
SELECT ROUND (TS, 'Hh24') AS TIMESTAMP_VAL, 
     AVG (DURATION) AS DURATION 
FROM 
     DATASET 
GROUP BY 
     ROUND (TS, 'Hh24') 
ORDER BY 
     TIMESTAMP_VAL; 

Примечание: экстракт (час от systimestamp) будет вычитая смещение часового пояса

+0

+1 Лично я использовал бы 'TRUNC' вместо' ROUND', но концепция такая же. –

Смежные вопросы