BOOLOR_AGG¶
如果组中至少有一条布尔记录的计算结果为 TRUE,则返回 TRUE。
如果组内的所有记录均为 NULL,或者该组为空,则函数返回 NULL。
- 另请参阅:
语法¶
聚合函数
BOOLOR_AGG( <expr> )
窗口函数
BOOLOR_AGG( <expr> ) OVER ( [ PARTITION BY <partition_expr> ] )
实参¶
expr
输入表达式必须是不能计算为布尔或不能转换为布尔的表达式。
partition_expr
此列或表达式指定如何将输入分隔到分区(子窗口)中。
返回¶
返回值的数据类型是 BOOLEAN。
使用说明¶
如果数值、十进制和浮点值如果不为零,则将其转换为“true”。
不支持字符/文本类型,因为它们无法转换为布尔。
用作窗口函数时:
此函数不支持:
OVER 子句中的 ORDER BY 分子句。
窗口框架。
示例¶
聚合函数
下面的示例显示,如果至少有一个输入值为 true,则 boolor_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 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 | +----------------+----------------+----------------+----------------+
窗口函数
此示例与上一个示例类似,但它将用法显示为窗口函数,其中输入行分为两个分区(一个表示 IDs 大于 0,一个表示 IDs 小于或等于 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 | +----+---------------------------------------------+---------------------------------------------+---------------------------------------------+---------------------------------------------+
错误示例
如果传递此函数的字符串无法转换为布尔,则该函数将给出错误:
select boolor_agg('invalid type');
100037 (22018): Boolean value 'invalid_type' is not recognized