在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_id
、order_date
和amount_sold
字段。然后,我們使用SUM()
函數和OVER()
子句計算每個產品在給定日期之前(包括當天)的累計銷售額。PARTITION BY
子句將數據按產品ID分組,而ORDER BY
子句則按訂單日期對每個分組進行排序。ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
表示窗口范圍從當前行的第一行開始,直到當前行。
最后,我們按product_id
和order_date
對結果進行排序。這樣,我們就可以看到每個產品在不同日期的累計銷售額。