AVG 範圍函數 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AVG 範圍函數

AVG 範圍函數傳回輸入表達式值的平均值 (算術平均數)。AVG 函數處理數值,且忽略 NULL 值。

語法

AVG ( [ALL ] expression ) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

引數

expression

函數運算的目標欄或表達式。

ALL

如果指定引數 ALL,則函數在計數時會保留表達式中的所有重複值。ALL 為預設值。不支援 DISTINCT。

OVER

指定彙總函數的視窗子句。OVER 子句區分視窗彙總函數和正常組彙總函數。

PARTITION BY expr_list

以一或多個表達式定義 AVG 函數的視窗。

ORDER BY order_list

排序每一個分割區內的列。如果未指定 PARTITION BY,ORDER BY 會使用整個資料表。

frame_clause

如果彙總函數使用 ORDER BY 子句,則需要明確的窗框子句。窗框子句在排序的結果內包含或排除列集,以調整函數視窗中的一個列集。窗框子句包含 ROWS 關鍵字和相關的指定元。請參閱範圍函數語法摘要

資料類型

AVG 函數支援的引數類型包括 SMALLINT、INTEGER、BIGINT、NUMERIC、DECIMAL、REAL 及 DOUBLE PRECISION。

AVG 函數支援的傳回類型如下:

  • BIGINT 代表 SMALLINT 或 INTEGER 引數

  • NUMERIC 代表 BIGINT 引數

  • DOUBLE PRECISION 代表浮點數引數

範例

下列範例會依日期計算銷售數量的移動平均數;依日期 ID 和銷售 ID 排序結果:

select salesid, dateid, sellerid, qty, avg(qty) over (order by dateid, salesid rows unbounded preceding) as avg from winsales order by 2,1; salesid | dateid | sellerid | qty | avg ---------+------------+----------+-----+----- 30001 | 2003-08-02 | 3 | 10 | 10 10001 | 2003-12-24 | 1 | 10 | 10 10005 | 2003-12-24 | 1 | 30 | 16 40001 | 2004-01-09 | 4 | 40 | 22 10006 | 2004-01-18 | 1 | 10 | 20 20001 | 2004-02-12 | 2 | 20 | 20 40005 | 2004-02-12 | 4 | 10 | 18 20002 | 2004-02-16 | 2 | 20 | 18 30003 | 2004-04-18 | 3 | 15 | 18 30004 | 2004-04-18 | 3 | 20 | 18 30007 | 2004-09-07 | 3 | 30 | 19 (11 rows)

如需 WINSALES 資料表的描述,請參閱範圍函數範例的範例資料表