COUNT 視窗函數 - Amazon Redshift

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

COUNT 視窗函數

COUNT 視窗函數會計算運算式定義的資料列。

COUNT 函數有兩種變化。COUNT(*) 會計算目標資料表中的所有資料列,無論是否包含 null。COUNT(運算式) 會計算特定資料欄或運算式中具有非NULL值的資料列數目。

語法

COUNT ( * | [ ALL ] expression) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

引數

expression

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

ALL

使用引數 ALL時,函數會保留運算式中的所有重複值以進行計數。ALL 為預設值。不支援 DISTINCT。

OVER

指定彙總函數的視窗子句。OVER 子句會將視窗彙總函數與一般設定彙總函數區分開來。

PARTITION 依 expr_list 排序

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

ORDER BY 訂單_清單

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

frame_clause

如果 ORDER BY 子句用於彙總函數,則需要明確的影格子句。窗框子句在排序的結果內包含或排除列集,以調整函數視窗中的一個列集。框架子句由ROWS關鍵字和相關聯的規格符組成。請參閱 範圍函數語法摘要

資料類型

COUNT 函數支援所有引數資料類型。

COUNT 函數支援的傳回類型為 BIGINT。

範例

下列範例顯示從資料視窗開頭的所有列的銷售 ID、數量和計數:

select salesid, qty, count(*) over (order by salesid rows unbounded preceding) as count from winsales order by salesid; salesid | qty | count ---------+-----+----- 10001 | 10 | 1 10005 | 30 | 2 10006 | 10 | 3 20001 | 20 | 4 20002 | 20 | 5 30001 | 10 | 6 30003 | 15 | 7 30004 | 20 | 8 30007 | 30 | 9 40001 | 40 | 10 40005 | 10 | 11 (11 rows)

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

下列範例顯示如何從資料視窗開頭計算非 null 列的銷售 ID、數量和計數。(在WINSALES表格中,QTY_SHIPPED 欄包含一些 NULLs。)

select salesid, qty, qty_shipped, count(qty_shipped) over (order by salesid rows unbounded preceding) as count from winsales order by salesid; salesid | qty | qty_shipped | count ---------+-----+-------------+------- 10001 | 10 | 10 | 1 10005 | 30 | | 1 10006 | 10 | | 1 20001 | 20 | 20 | 2 20002 | 20 | 20 | 3 30001 | 10 | 10 | 4 30003 | 15 | | 4 30004 | 20 | | 4 30007 | 30 | | 4 40001 | 40 | | 4 40005 | 10 | 10 | 5 (11 rows)