any

any

컬럼에서 처음 만난 값을 선택하는 집계 함수예요. 쿼리는 임의의 순서로 실행될 수 있기 때문에 결과가 비결정적(non-deterministic)이라는 점을 기억해 두세요.

출처: 문서

본문

v1.1.0에서 도입됐어요.

컬럼에서 처음 만난 값을 선택해요. 쿼리가 임의의 순서로 실행될 수 있기 때문에 이 함수의 결과는 비결정적이에요. 임의적이지만 결정적인 결과가 필요하다면 min 또는 max 함수를 사용하세요.

기본적으로 이 함수는 NULL을 반환하지 않아요. 즉, 입력 컬럼의 NULL 값을 무시해요. 다만 함수를 RESPECT NULLS 수정자와 함께 사용하면, NULL이든 아니든 읽은 첫 값을 반환해요.

구현 세부 사항 (Implementation details)

어떤 경우에는 실행 순서에 의존할 수 있어요. ORDER BY를 사용하는 서브쿼리에서 SELECT가 나오는 경우가 여기에 해당해요.

SELECT 쿼리에 GROUP BY 절이나 최소 하나의 집계 함수가 있으면, ClickHouse는 (MySQL과 달리) SELECT, HAVING, ORDER BY 절의 모든 표현식이 키 또는 집계 함수로부터 계산되도록 요구해요. 다시 말해, 테이블에서 선택한 각 컬럼은 키에서 또는 집계 함수 안에서 사용되어야 해요.

MySQL처럼 동작하게 하려면 다른 컬럼들을 any 집계 함수 안에 넣으면 돼요.

함수의 반환 타입은 입력과 같지만, LowCardinality는 버려져요. 즉, 입력으로 행이 없다면 그 타입의 기본값을 반환해요 (정수는 0, Nullable() 컬럼은 Null). -OrNull 컴비네이터를 사용하면 이 동작을 바꿀 수 있어요.

구문 (Syntax)

any(column)[ RESPECT NULLS]

별칭 (Aliases)

any_value, first_value

인자 (Arguments)

  • column — 컬럼 이름. Any

반환 값 (Returned value)

처음 만난 값을 반환해요. Any

예시 (Examples)

사용 예시:

Query

CREATE TABLE tab (city Nullable(String)) ENGINE=Memory;
INSERT INTO tab (city) VALUES (NULL), ('Amsterdam'), ('New York'), ('Tokyo'), ('Valencia'), (NULL);
SELECT any(city), anyRespectNulls(city) FROM tab;

Response

┌─any(city)─┬─anyRespectNulls(city)─┐
│ Amsterdam │ ᴺᵁᴸᴸ                  │
└───────────┴───────────────────────┘

더 알아보기 (Learn more)