如何通过Oracle模型子句实现数据的动态聚合

avatar
作者
筋斗云
阅读量:0

在Oracle数据库中,可以使用MODEL子句实现数据的动态聚合

WITH sales_data AS (   SELECT      product_id,      order_date,      amount_sold    FROM      sales ) SELECT    product_id,    order_date,    SUM(amount_sold) OVER (PARTITION BY product_id ORDER BY order_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as running_total FROM    sales_data ORDER BY    product_id,    order_date; 

在这个示例中,我们首先创建了一个名为sales_data的临时表,包含product_idorder_dateamount_sold字段。然后,我们使用SUM()函数和OVER()子句计算每个产品在给定日期之前(包括当天)的累计销售额。PARTITION BY子句将数据按产品ID分组,而ORDER BY子句则按订单日期对每个分组进行排序。ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW表示窗口范围从当前行的第一行开始,直到当前行。

最后,我们按product_idorder_date对结果进行排序。这样,我们就可以看到每个产品在不同日期的累计销售额。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!