vertica sql: 运行 总计 1 小时
vertica sql: running sum for 1 hour
我知道论坛上有很多关于 运行 总数的问题,但我不太清楚如何将其应用到我的示例中。如果有人能提供帮助,我们将不胜感激。
我正在尝试通过 'ID' 计算 'speed' 分区的每小时 运行 总数。我该如何进行?我正在使用垂直数据库。谢谢!
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
编辑:
最终结果应该是这样的:
您应该可以按 id 分区并使用 range between '1 hour' preceding and current row
。 RANGE
作用于 ORDER BY
中的值以限制 window 帧。
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
另外,请注意日期时间描述,根据您的示例,这正是您要查找的内容。
you can try this:
select
TIME_SLICE(datetime, 1, 'HOUR'),
sum(speed)
from mytable
group by TIME_SLICE(datetime, 1, 'HOUR')
order by TIME_SLICE(datetime, 1, 'HOUR')
我知道论坛上有很多关于 运行 总数的问题,但我不太清楚如何将其应用到我的示例中。如果有人能提供帮助,我们将不胜感激。
我正在尝试通过 'ID' 计算 'speed' 分区的每小时 运行 总数。我该如何进行?我正在使用垂直数据库。谢谢!
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
编辑: 最终结果应该是这样的:
您应该可以按 id 分区并使用 range between '1 hour' preceding and current row
。 RANGE
作用于 ORDER BY
中的值以限制 window 帧。
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
另外,请注意日期时间描述,根据您的示例,这正是您要查找的内容。
you can try this:
select
TIME_SLICE(datetime, 1, 'HOUR'),
sum(speed)
from mytable
group by TIME_SLICE(datetime, 1, 'HOUR')
order by TIME_SLICE(datetime, 1, 'HOUR')