MODE¶
expr1
내의 값에 대해 가장 빈번한 값을 반환합니다. NULL 값은 무시됩니다. 모든 값이 NULL이거나 행이 0이면 함수는 NULL을 반환합니다.
구문¶
집계 함수
MODE( <expr1> )
윈도우 함수
MODE( <expr1> ) OVER ( [ PARTITION BY <expr2> ] )
인자¶
expr1
이 식은 가장 빈번한 값을 찾기 위해 검색되는 값을 생성합니다. 식은 다음 데이터 타입 중 하나일 수 있습니다.
BINARY
BOOLEAN
DATE
FLOAT
INTEGER
NUMBER
TIMESTAMP (TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ)
VARCHAR
VARIANT
이 함수는 다음 데이터 타입을 지원하지 않습니다.
ARRAY
GEOGRAPHY
OBJECT
expr2
데이터를 그룹으로 분할할 선택적 식입니다. 출력에는 각 그룹/파티션에 대한 가장 빈번한 값이 포함됩니다.
반환¶
반환된 값의 데이터 타입은 입력 식의 데이터 타입과 동일합니다.
사용법 노트¶
가장 빈번한 값에 동점이 있는 경우(두 개 이상의 값이 서로 마찬가지로 자주 발생하고, 다른 어떤 값보다 더 자주 발생하는 경우), MODE는 해당 값 중 하나를 반환합니다.
이 함수에는 DISTINCT가 지원되지 않습니다.
NULL이 가장 빈번한 값이더라도 함수는 NULL을 반환하지 않습니다(모든 값이 NULL인 경우가 아닌 한).
윈도우 함수로 사용되는 경우:
이 함수는 다음을 지원하지 않습니다.
OVER() 절의 ORDER BY 하위 절. 가장 빈번한 값을 선택할 때 값의 순서는 중요하지 않습니다.
윈도우 프레임.
예¶
다음 코드는 MODE
사용법을 보여줍니다.
테이블과 데이터를 만듭니다.
create or replace table aggr(k int, v decimal(10,2));v 열에 대한
MODE
값을 가져옵니다. 행이 없기 때문에 함수는 NULL을 반환합니다.select mode(v) from aggr; +---------+ | MODE(V) | |---------| | NULL | +---------+일부 행을 삽입합니다.
INSERT INTO aggr (k, v) VALUES (1, 10), (1, 10), (1, 10), (1, 10), (1, 20), (1, 21);
MODE
는 가장 빈번한 값 10을 반환합니다.select mode(v) from aggr; +---------+ | MODE(V) | |---------| | 10.00 | +---------+행을 몇 개 더 삽입합니다.
INSERT INTO aggr (k, v) VALUES (2, 20), (2, 20), (2, 25), (2, 30);이제 가장 빈번한 두 가지 값이 있습니다.
MODE
는 값 10을 선택합니다.select mode(v) from aggr; +---------+ | MODE(V) | |---------| | 10.00 | +---------+NULL 값이 있는 행을 삽입합니다.
INSERT INTO aggr (k, v) VALUES (3, null);각 그룹의
MODE
값을 가져옵니다. k = 3 그룹의 값에는 NULL 값만 포함되므로 해당 그룹에 대해 반환된 값은 NULL입니다.select k, mode(v) from aggr group by k order by k; +---+---------+ | K | MODE(V) | |---+---------| | 1 | 10.00 | | 2 | 20.00 | | 3 | NULL | +---+---------+
MODE
는 OVER() 절과 함께 기본 윈도우 함수로 사용할 수도 있습니다.select k, v, mode(v) over (partition by k) from aggr order by k, v; +---+-------+-------------------------------+ | K | V | MODE(V) OVER (PARTITION BY K) | |---+-------+-------------------------------| | 1 | 10.00 | 10.00 | | 1 | 10.00 | 10.00 | | 1 | 10.00 | 10.00 | | 1 | 10.00 | 10.00 | | 1 | 20.00 | 10.00 | | 1 | 21.00 | 10.00 | | 2 | 20.00 | 20.00 | | 2 | 20.00 | 20.00 | | 2 | 25.00 | 20.00 | | 2 | 30.00 | 20.00 | | 3 | NULL | NULL | +---+-------+-------------------------------+