BOOLXOR_AGG¶
그룹에서 정확히 하나의 부울 레코드가 TRUE로 평가되는 경우 TRUE를 반환합니다.
그룹의 모든 레코드가 NULL이거나 그룹이 비어 있는 경우, 함수는 NULL을 반환합니다.
- 참고 항목:
구문¶
집계 함수
BOOLXOR_AGG( <expr> )
윈도우 함수
BOOLXOR_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
인자¶
expr
입력 식은 부울로 평가되거나 부울로 변환될 수 있는 식이어야 합니다.
partition_expr
이 열 또는 식은 입력을 파티션(하위 윈도우)으로 분리하는 방법을 지정합니다.
반환¶
반환된 값의 데이터 타입은 BOOLEAN 입니다.
사용법 노트¶
숫자 값이 0이 아닌 경우
TRUE
로 변환됩니다.문자/텍스트 형식은 부울로 변환할 수 없으므로 지원되지 않습니다.
윈도우 함수로 사용되는 경우:
이 함수는 다음을 지원하지 않습니다.
OVER 절의 ORDER BY 하위 절.
윈도우 프레임.
예¶
다음 예는 입력 값 중 정확히 하나가 true인 경우, boolxor_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 boolxor_agg(c1), boolxor_agg(c2), boolxor_agg(c3), boolxor_agg(c4) from test_boolean_agg; +-----------------+-----------------+-----------------+-----------------+ | BOOLXOR_AGG(C1) | BOOLXOR_AGG(C2) | BOOLXOR_AGG(C3) | BOOLXOR_AGG(C4) | |-----------------+-----------------+-----------------+-----------------| | False | False | True | False | +-----------------+-----------------+-----------------+-----------------+
윈도우 함수
이 예는 이전 예와 유사하지만, 입력 행이 두 파티션(하나는 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, boolxor_agg(c1) OVER (PARTITION BY (id > 0)), boolxor_agg(c2) OVER (PARTITION BY (id > 0)), boolxor_agg(c3) OVER (PARTITION BY (id > 0)), boolxor_agg(c4) OVER (PARTITION BY (id > 0)) from test_boolean_agg order by id; +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+ | ID | BOOLXOR_AGG(C1) OVER (PARTITION BY (ID > 0)) | BOOLXOR_AGG(C2) OVER (PARTITION BY (ID > 0)) | BOOLXOR_AGG(C3) OVER (PARTITION BY (ID > 0)) | BOOLXOR_AGG(C4) OVER (PARTITION BY (ID > 0)) | |----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------| | -4 | False | False | False | False | | -3 | False | False | False | False | | -2 | False | False | False | False | | -1 | False | False | False | False | | 1 | False | False | True | False | | 2 | False | False | True | False | | 3 | False | False | True | False | | 4 | False | False | True | False | +----+----------------------------------------------+----------------------------------------------+----------------------------------------------+----------------------------------------------+
오류 예
부울로 변환할 수 없는 문자열이 이 함수에 전달되는 경우, 함수에서 오류가 발생합니다.
select boolxor_agg('invalid type');
100037 (22018): Boolean value 'invalid_type' is not recognized