在此示例中,AVG 用作窗口函数,来按月计算 2000 年所有产品销售额的移动平均值。请注意,WINDOW 说明使用 RANGE 子句,这会导致根据月值计算窗口边界,而不是像 ROWS 子句那样按相邻行的数目来计算边界。例如,如果部分或全部产品在某个特定的月完全没有销售额,则使用 ROWS 将产生不同的结果。
SELECT * FROM ( SELECT s.ProductID, Month( o.OrderDate ) AS julian_month, SUM( s.Quantity ) AS sales, AVG( SUM( s.Quantity ) ) OVER ( PARTITION BY s.ProductID ORDER BY Month( o.OrderDate ) ASC RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ) AS average_sales FROM SalesOrderItems s KEY JOIN SalesOrders o WHERE Year( o.OrderDate ) = 2000 GROUP BY s.ProductID, Month( o.OrderDate ) ) AS DT ORDER BY 1,2; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |