BOOLOR_AGG

BOOLOR_AGG

그룹 안의 Boolean 레코드들 중 하나라도 TRUE인지 판별하는 집계 함수예요. 어떤 값이 TRUE로 평가되면 TRUE를, 그룹이 비어 있거나 전부 NULL이면 NULL을 돌려줘요. 윈도우 함수로도 쓸 수 있어요.

출처: 공식 문서

본문

그룹 안의 Boolean 레코드 중 하나 이상이 TRUE로 평가되면 TRUE를 반환합니다.

그룹의 모든 레코드가 NULL이거나 그룹이 비어 있으면 함수는 NULL을 반환합니다.

참고 (See also):

BOOLOR , BOOLAND_AGG , BOOLXOR_AGG

구문 (Syntax)

집계 함수 (Aggregate function)

BOOLOR_AGG( <expr> )

윈도우 함수 (Window function)

BOOLOR_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )

인자 (Arguments)

expr

입력 표현식은 Boolean으로 평가되거나 Boolean으로 변환될 수 있는 표현식이어야 합니다.

partition_expr

입력을 파티션(부분 윈도우)으로 나누는 방법을 지정하는 컬럼 또는 표현식입니다.

반환값 (Returns)

반환값의 데이터 타입은 BOOLEAN입니다.

사용 참고 (Usage notes)

  • 숫자형(Numeric) 값은 0이 아니면 TRUE로 변환됩니다.
  • 문자열·바이너리(String and binary) 값은 Boolean으로 변환할 수 없어 지원되지 않습니다.
  • 이 함수를 윈도우 함수로 호출할 때는 다음을 지원하지 않습니다:
    • OVER 절 안의 ORDER BY 절.
    • 명시적 윈도우 프레임.

예제 (Examples)

집계 함수 (Aggregate function)

다음 예제는 boolor_agg가 입력 값 중 하나라도 true면 true를 반환함을 보여줍니다.

테이블을 만들고 로드합니다:

CREATE OR REPLACE TABLE test_boolean_agg (
  id INTEGER,
  c1 BOOLEAN,
  c2 BOOLEAN,
  c3 BOOLEAN,
  c4 BOOLEAN
);

INSERT INTO test_boolean_agg (id, c1, c2, c3, c4) VALUES
  (1, TRUE, TRUE,  TRUE,  FALSE),
  (2, TRUE, FALSE, FALSE, FALSE),
  (3, TRUE, TRUE,  FALSE, FALSE),
  (4, TRUE, FALSE, FALSE, FALSE);

데이터를 표시합니다:

SELECT *
  FROM test_boolean_agg;
+----+------+-------+-------+-------+
| ID | C1   | C2    | C3    | C4    |
|----+------+-------+-------+-------|
|  1 | True | True  | True  | False |
|  2 | True | False | False | False |
|  3 | True | True  | False | False |
|  4 | True | False | False | False |
+----+------+-------+-------+-------+

데이터를 조회합니다:

SELECT BOOLOR_AGG(c1), BOOLOR_AGG(c2), BOOLOR_AGG(c3), BOOLOR_AGG(c4)
  FROM test_boolean_agg;
+----------------+----------------+----------------+----------------+
| BOOLOR_AGG(C1) | BOOLOR_AGG(C2) | BOOLOR_AGG(C3) | BOOLOR_AGG(C4) |
|----------------+----------------+----------------+----------------|
| True           | True           | True           | False          |
+----------------+----------------+----------------+----------------+

윈도우 함수 (Window function)

이 예제는 앞의 예제와 비슷하지만, 입력 행을 두 파티션(ID가 0보다 큰 경우와 0보다 작거나 같은 경우)으로 나누는 윈도우 함수로의 사용을 보여줍니다. 테이블에 추가 데이터가 들어가 있습니다.

테이블에 행을 추가합니다:

INSERT INTO test_boolean_agg (id, c1, c2, c3, c4) VALUES
  (-4, FALSE, FALSE, FALSE, TRUE),
  (-3, FALSE, TRUE,  TRUE,  TRUE),
  (-2, FALSE, FALSE, TRUE,  TRUE),
  (-1, FALSE, TRUE,  TRUE,  TRUE);

데이터를 표시합니다:

SELECT *
  FROM test_boolean_agg
  ORDER BY id;
+----+-------+-------+-------+-------+
| ID | C1    | C2    | C3    | C4    |
|----+-------+-------+-------+-------|
| -4 | False | False | False | True  |
| -3 | False | True  | True  | True  |
| -2 | False | False | True  | True  |
| -1 | False | True  | True  | True  |
|  1 | True  | True  | True  | False |
|  2 | True  | False | False | False |
|  3 | True  | True  | False | False |
|  4 | True  | False | False | False |
+----+-------+-------+-------+-------+

데이터를 조회합니다:

SELECT
    id,
    BOOLOR_AGG(c1) OVER (PARTITION BY (id > 0)),
    BOOLOR_AGG(c2) OVER (PARTITION BY (id > 0)),
    BOOLOR_AGG(c3) OVER (PARTITION BY (id > 0)),
    BOOLOR_AGG(c4) OVER (PARTITION BY (id > 0))
  FROM test_boolean_agg
  ORDER BY id;
+----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------+
| ID | BOOLOR_AGG(C1) OVER (PARTITION BY (ID > 0)) | BOOLOR_AGG(C2) OVER (PARTITION BY (ID > 0)) | BOOLOR_AGG(C3) OVER (PARTITION BY (ID > 0)) | BOOLOR_AGG(C4) OVER (PARTITION BY (ID > 0)) |
|----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------|
| -4 | False                                       | True                                        | True                                        | True                                        |
| -3 | False                                       | True                                        | True                                        | True                                        |
| -2 | False                                       | True                                        | True                                        | True                                        |
| -1 | False                                       | True                                        | True                                        | True                                        |
|  1 | True                                        | True                                        | True                                        | False                                       |
|  2 | True                                        | True                                        | True                                        | False                                       |
|  3 | True                                        | True                                        | True                                        | False                                       |
|  4 | True                                        | True                                        | True                                        | False                                       |
+----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------+

오류 예제 (Error example)

Boolean으로 변환할 수 없는 문자열을 넘기면 함수는 오류를 반환합니다:

select boolor_agg('invalid type');

100037 (22018): Boolean value 'invalid_type' is not recognized

더 알아보기 (Learn more)