COUNT 函數 - Amazon Redshift

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

COUNT 函數

COUNT 函數計算表達式所定義的列數。

COUNT 函數有三種版本。COUNT ( * ) 計算目標資料表中的所有列數,而不論是否包含 Null。COUNT (expression) 計算特定欄或表達式中不含 NULL 值的列數。COUNT (DISTINCT expression) 計算某欄或表達式中相異非 NULL 值的個數。

Syntax (語法)

[ APPROXIMATE ] COUNT ( [ DISTINCT | ALL ] * | expression )

引數

expression

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

DISTINCT | ALL

如果指定引數 DISTINCT,則函數在計數之前會從指定的表達式中消除所有重複值。如果指定引數 ALL,則函數在計數時會保留表達式中的所有重複值。ALL 為預設值。

APPROXIMATE

當與近似值一起使用時,計數(不同表達函數使用 HyperLogLog 演算法,大致估計某欄或表達式中相異非 NULL 值的個數。使用 APPROXIMATE 關鍵字的查詢運行較快,其相對錯誤率低到約 2%。如果每個查詢或每一組 (若有 group by 子句) 傳回數百萬個以上的大量相異值,則查詢一定要採用近似法。如果相異值較少 (數千個),則近似法可能比精確計數更慢。APPROXIMATE 只能與 COUNT (DISTINCT) 一起使用。

資料類型

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

COUNT 函數傳回 BIGINT。

範例

計算佛羅里達州的所有使用者人數:

select count (*) from users where state='FL'; count ------- 510 (1 row)

從 EVENT 資料表計算所有唯一會場 ID 的數目:

select count (distinct venueid) as venues from event; venues -------- 204 (1 row)

計算每個賣方列出整批銷售門票超過四張的次數。結果依賣方 ID 分組:

select count(*), sellerid from listing where numtickets > 4 group by sellerid order by 1 desc, 2; count | sellerid -------+---------- 12 | 6386 11 | 17304 11 | 20123 11 | 25428 ...

下列範例比較 COUNT 和 APPROXIMATE COUNT 的傳回值和執行時間。

select count(distinct pricepaid) from sales; count ------- 4528 (1 row) Time: 48.048 ms select approximate count(distinct pricepaid) from sales; count ------- 4541 (1 row) Time: 21.728 ms