Over Aggregation
Batch Streaming
OVER aggregates compute an aggregated value for every input row over a range of ordered rows. In contrast to GROUP BY aggregates, OVER aggregates do not reduce the number of result rows to a single row for every group. Instead OVER aggregates produce an aggregated value for every input row.
OVER聚合为有序行范围内的每个输入行计算聚合值。与GROUP BY聚合不同,OVER聚合不会将每个组的结果行数减少到一行。相反,OVER聚合为每个输入行生成聚合值。
The following query computes for every order the sum of amounts of all orders for the same product that were received within one hour before the current order.
下面的查询为每个订单计算当前订单前一小时内收到的同一产品的所有订单的金额总和。
SELECT order_id, order_time, amount,
SUM(amount) OVER (
PARTITION BY product
ORDER BY order_time
RANGE BETWEEN INTERVAL '1' HOUR PRECEDING AND