COUNT 함수
COUNT 함수는 표현식에서 정의하는 행의 수를 계산합니다.
COUNT 함수는 다음과 같은 변형이 있습니다.
COUNT ( * )는 NULL 값의 유무에 상관없이 대상 테이블에서 모든 행의 수를 계산합니다.
COUNT ( expression )는 특정 열 또는 표현식에서 NULL을 제외한 값이 포함된 행의 수를 계산합니다.
COUNT ( DISTINCT expression )는 임의의 열 또는 표현식에서 NULL을 제외한 고유 값의 수를 계산합니다.
APPROXIMATE COUNT DISTINCT는 임의의 열 또는 표현식에서 NULL을 제외한 고유 값의 수를 대략적으로 구합니다.
구문
COUNT( * | expression )
COUNT ( [ DISTINCT | ALL ] expression )
APPROXIMATE COUNT ( DISTINCT expression )
인수
- 표현식
-
함수가 실행되는 대상 열 또는 표현식입니다. COUNT 함수는 모든 인수 데이터 형식을 지원합니다.
- DISTINCT | ALL
-
인수가 DISTINCT일 때는 행의 수를 계산하기 전에 지정한 표현식에서 중복 값을 모두 제거합니다. 인수가 ALL일 때는 함수가 표현식의 모든 중복 값을 그대로 유지한 채 행의 수를 계산합니다. ALL이 기본값입니다.
- APPROXIMATE
-
APPROXIMATE와 함께 사용할 때는 COUNT DISTINCT 함수가 HyperLogLog 알고리즘을 사용하여 임의의 열 또는 표현식에서 NULL을 제외한 고유 값의 수를 대략적으로 구합니다. 쿼리에 APPROXIMATE 키워드를 사용하면 실행 속도가 빨라질 뿐만 아니라 상대 오차도 약 2%로 낮습니다. 쿼리마다, 혹은 GROUP BY 절이 있는 경우 그룹마다 수백만 개가 넘는 고유 값을 반환하는 쿼리일 때는 근사치가 타당한 것으로 간주됩니다. 하지만 고유 값이 수천 개로 적을 경우에는 근사치일 때 속도가 정확한 행의 수일 때 보다 느려질 수 있습니다. APPROXIMATE는 COUNT DISTINCT와만 사용할 수 있습니다.
반환 타입
COUNT 함수는 BIGINT를 반환합니다.
예시
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