BOOLAND_AGG
BOOLAND_AGG
그룹 안의 모든 NULL이 아닌 Boolean 레코드가 TRUE로 평가되면 TRUE를 반환하는 집계·윈도우 함수예요. 그룹의 모든 레코드가 NULL이거나 그룹이 비어 있으면 NULL을 반환해요.
출처: 공식 문서
본문
그룹 안의 모든 NULL이 아닌 Boolean 레코드가 TRUE로 평가되면 TRUE를 반환합니다.
그룹의 모든 레코드가 NULL이거나 그룹이 비어 있으면 함수는 NULL을 반환합니다.
참고 (See also): BOOLAND, BOOLOR_AGG, BOOLXOR_AGG
구문 (Syntax)
집계 함수 (Aggregate function)
BOOLAND_AGG( <expr> )
윈도우 함수 (Window function)
BOOLAND_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
인자 (Arguments)
입력 표현식은 boolean으로 평가되거나 boolean으로 변환될 수 있는 표현식이어야 합니다.
이 열 또는 표현식은 입력을 파티션(부분 윈도우)으로 분리하는 방법을 지정합니다.
반환값 (Returns)
이 함수는 BOOLEAN 타입의 값을 반환합니다.
사용 참고 사항 (Usage notes)
-
숫자 값은 0이 아니면 TRUE로 변환됩니다.
-
문자열과 이진 값은 Boolean 값으로 변환될 수 없기 때문에 지원되지 않습니다.
-
이 함수가 윈도우 함수로 호출되면 다음을 지원하지 않습니다:
-
OVER 절 안의 ORDER BY 절.
-
명시적 윈도우 프레임.
예제 (Examples)
집계 함수 (Aggregate function)
다음 예제는 모든 입력 값이 true일 때 booland_agg가 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 BOOLAND_AGG(c1), BOOLAND_AGG(c2), BOOLAND_AGG(c3), BOOLAND_AGG(c4)
FROM test_boolean_agg;
+-----------------+-----------------+-----------------+-----------------+
| BOOLAND_AGG(C1) | BOOLAND_AGG(C2) | BOOLAND_AGG(C3) | BOOLAND_AGG(C4) |
|-----------------+-----------------+-----------------+-----------------|
| True | False | False | False |
+-----------------+-----------------+-----------------+-----------------+
윈도우 함수 (Window function)
이 예제는 앞선 예제와 비슷하지만, 입력 행을 두 개의 파티션(0보다 큰 ID를 위한 파티션과 0 이하의 ID를 위한 파티션)으로 나누는 윈도우 함수로의 사용을 보여줍니다. 테이블에 추가 데이터가 들어 있습니다.
테이블에 행을 추가합니다:
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,
BOOLAND_AGG(c1) OVER (PARTITION BY (id > 0)),
BOOLAND_AGG(c2) OVER (PARTITION BY (id > 0)),
BOOLAND_AGG(c3) OVER (PARTITION BY (id > 0)),
BOOLAND_AGG(c4) OVER (PARTITION BY (id > 0))
FROM test_boolean_agg
ORDER BY id;
+----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+
| ID | BOOLAND_AGG(C1) OVER (PARTITION BY (ID > 0)) | BOOLAND_AGG(C2) OVER (PARTITION BY (ID > 0)) | BOOLAND_AGG(C3) OVER (PARTITION BY (ID > 0)) | BOOLAND_AGG(C4) OVER (PARTITION BY (ID > 0)) |
|----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------|
| -4 | False | False | False | True |
| -3 | False | False | False | True |
| -2 | False | False | False | True |
| -1 | False | False | False | True |
| 1 | True | False | False | False |
| 2 | True | False | False | False |
| 3 | True | False | False | False |
| 4 | True | False | False | False |
+----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+
오류 예제 (Error example)
Boolean으로 변환할 수 없는 문자열이 이 함수에 전달되면 오류가 반환됩니다:
select booland_agg('invalid type');
100037 (22018): Boolean value 'invalid_type' is not recognized