

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 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>

Florida 주의 모든 사용자 수를 계산합니다.

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

개별 판매자가 4장 이상의 티켓을 한 묶음으로 판매한 횟수를 계산합니다. 결과는 판매자 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
```