2016-10-03 2 views
1

Я знаю, что есть много вопросов форума о текущих итогах, но почему-то я не совсем знаю, как применить к моему примеру. Так что цените, если кто-то может помочь.vertica sql: общая сумма за 1 час

Я пытаюсь вычислить почасовое общее количество разделов «скорость» на «ID». Как я могу продолжить это? Я использую базу данных Vertica. Спасибо!

DATETIME,ID,speed 
05-12-15 0:15,1,40 
05-12-15 0:30,1,61 
05-12-15 0:45,1,66 
05-12-15 1:00,1,48 
05-12-15 1:15,1,66 
05-12-15 1:30,1,50 
05-12-15 1:45,1,47 
05-12-15 2:00,1,70 
05-12-15 2:15,1,42 
05-12-15 2:30,1,58 
05-12-15 2:45,1,74 
05-12-15 3:00,1,43 
05-12-15 3:15,1,57 
05-12-15 3:30,1,69 
05-12-15 3:45,1,52 
05-12-15 4:00,1,43 
05-12-15 0:15,2,48 
05-12-15 0:30,2,73 
05-12-15 0:45,2,41 
05-12-15 1:00,2,56 
05-12-15 1:15,2,65 
05-12-15 1:30,2,76 
05-12-15 1:45,2,66 
05-12-15 2:00,2,49 
05-12-15 2:15,2,75 
05-12-15 2:30,2,67 
05-12-15 2:45,2,76 
05-12-15 3:00,2,47 
05-12-15 3:15,2,53 
05-12-15 3:30,2,76 
05-12-15 3:45,2,63 
05-12-15 4:00,2,56 

EDIT: Окончательный результат должен быть что-то вроде этого:

enter image description here

+0

Начать с SELECT EXTRACT (HOUR FROM DATETIME), ID SUM (скорость) и GROUP BY на EXTRACT (HOUR FROM DATETIME), ID – smoore4

+0

извините, я просто обновил сообщение # Я не хочу собирать таблицу, он должен оставаться таким же количеством строк. – Jake

ответ

1

Вы должны быть в состоянии разделить по идентификатору и использовать range between '1 hour' preceding and current row. RANGE работает над значением в ORDER BY, чтобы ограничить рамку окна.

select datetime, 
     id, 
     speed, 
     sum(speed) over (partition by id 
         order by datetime desc 
         RANGE BETWEEN '1 hour' PRECEDING 
           AND CURRENT ROW) sum_speed_1hour 
from mytable 
order by id, datetime 

Также обратите внимание на дату datetime desc, которая на основе ваших примеров - это то, что вы ищете.

+0

оцените его много @woot! – Jake

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