COUNT函數 - Amazon Redshift

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

COUNT函數

該COUNT函數計算由表達式定義的行。

該COUNT函數具有以下變化。

  • COUNT(*)計算目標表中的所有行,無論它們是否包含空值。

  • COUNT(表達式)計算特定列或表達式中具有非NULL值的行數。

  • COUNT(DISTINCT表達式)計算列或表達式中不同非NULL值的數量。

  • APPROXIMATECOUNTDISTINCT近似欄或運算式中不同非NULL值的數目。

語法

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

引數

expression

函數運算的目標欄或表達式。該COUNT函數支持所有參數數據類型。

DISTINCT | ALL

使用引數時DISTINCT,函數會在執行計數之前,從指定的運算式中排除所有重複的值。使用引數時ALL,函數會保留運算式中所有重複的值以供計數。ALL為預設值。

APPROXIMATE

搭配使用時APPROXIMATE,COUNTDISTINCT函數會使用 HyperLogLog 演算法來近似資料行或運算式中不同非NULL值的數目。使用APPROXIMATE關鍵字的查詢執行速度更快,相對誤差約為 2%。如果每個查詢或每一組 (若有 group by 子句) 傳回數百萬個以上的大量相異值,則查詢一定要採用近似法。如果相異值較少 (數千個),則近似法可能比精確計數更慢。APPROXIMATE只能搭配使用COUNTDISTINCT。

傳回類型

該COUNT函數返回BIGINT。

範例

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

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

計算表中的所有事件名EVENT稱:

select count(eventname) from event; count ------- 8798

計算表中的所有事件名EVENT稱:

select count(all eventname) from event; count ------- 8798

IDs從EVENT表中計算所有獨特的場地:

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

計算每個賣方列出整批銷售門票超過四張的次數。結果依賣方 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時間APPROXIMATECOUNT。

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