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