count
도입 버전: v1.1.0
행 수 또는 NULL이 아닌 값의 개수를 계산합니다.
ClickHouse는 count에 대해 다음 구문을 지원합니다.
count(expr)또는COUNT(DISTINCT expr).count()또는COUNT(*).count()구문은 ClickHouse 전용입니다.
세부 정보
ClickHouse는 COUNT(DISTINCT ...) 구문을 지원합니다.
이 구문의 동작은 count_distinct_implementation 설정에 따라 달라집니다.
이 설정은 연산 수행에 어떤 uniq* 함수를 사용할지 결정합니다.
기본값은 uniqExact 함수입니다.
SELECT count() FROM table 쿼리는 기본적으로 MergeTree의 메타데이터를 사용해 최적화됩니다.
행 수준 보안을 사용해야 한다면 optimize_trivial_count_query 설정으로 이 최적화를 비활성화하십시오.
반면 SELECT count(nullable_column) FROM table 쿼리는 optimize_functions_to_subcolumns 설정을 활성화하면 최적화할 수 있습니다.
optimize_functions_to_subcolumns = 1이면 함수는 전체 컬럼 데이터를 읽고 처리하는 대신 null 서브컬럼만 읽습니다.
SELECT count(n) FROM table 쿼리는 SELECT sum(NOT n.null) FROM table로 변환됩니다.
구문
count([expr])인수
expr— 선택 사항입니다. 표현식입니다. 이 함수는 이 표현식이 NULL이 아닌 값을 반환한 횟수를 계산합니다.표현식
반환 값
함수가 매개변수 없이 호출되면 행 수를 반환하고, 그렇지 않으면 전달된 표현식이 NULL이 아닌 값을 반환한 횟수를 반환합니다. UInt64
예시
기본 행 수
CREATE TABLE t (num UInt8) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (2), (3);
SELECT count() FROM t┌─count()─┐
│ 5 │
└─────────┘COUNT(DISTINCT) 예시
-- This example shows that `count(DISTINCT num)` is performed by the `uniqExact` function according to the `count_distinct_implementation` setting value.
SELECT name, value FROM system.settings WHERE name = 'count_distinct_implementation';
SELECT count(DISTINCT num) FROM t┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
┌─countDistinct(num)─┐
│ 3 │
└────────────────────┘