温馨提示×

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

小樊
82
2024-09-07 23:02:34
栏目: 云计算

在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对结果进行排序。这样,我们就可以看到每个产品在不同日期的累计销售额。

0