温馨提示×

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

小樊
86
2024-09-07 23:02:34
栏目: 云计算
开发者测试专用服务器限时活动,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对结果进行排序。这样,我们就可以看到每个产品在不同日期的累计销售额。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:如何通过Oracle IF函数实现数据的动态处理

0