次の例では、2000 年における月別の全製品売上の移動平均を計算するための Window 関数として AVG が使用されています。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; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |