

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# COUNT 函數
<a name="r_COUNT"></a>

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

COUNT 函數有下列版本。
+ COUNT ( \$1 ) 計算目標資料表中的所有列數，而不論是否包含 Null。
+ COUNT (*expression*) 計算特定欄或表達式中不含 NULL 值的列數。
+ COUNT (DISTINCT *expression*) 計算某欄或表達式中相異非 NULL 值的個數。
+ APPROXIMATE COUNT DISTINCT 會大致估計某欄或運算式中相異非 NULL 值的個數。

## 語法
<a name="r_COUNT-synopsis"></a>

```
COUNT( * | expression )
```

```
COUNT ( [ DISTINCT | ALL ] expression )
```

```
APPROXIMATE COUNT ( DISTINCT expression )
```

## 引數
<a name="r_COUNT-arguments"></a>

 *expression *   
函數運算的目標欄或表達式。COUNT 函數支援所有引數資料類型。

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

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

## 傳回類型
<a name="c_Supported_data_types_count"></a>

COUNT 函數傳回 BIGINT。

## 範例
<a name="r_COUNT-examples"></a>

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

```
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
```

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

```
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 和 APPROXIMATE COUNT 的傳回值和執行時間。

```
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
```