在PostgreSQL中选择或布尔聚合函数

时间:2010-09-14 09:18:19

标签: sql postgresql

我想问你在PostgreSQL中如何使用select或aggregate函数检查表格列中的一个布尔值是否为真?

感谢。

3 个答案:

答案 0 :(得分:11)

您可以使用的布尔特定aggregate functions很少:bool_andbool_orevery

在您的特定情况下,您需要bool_or汇总 查询就像这样简单:

SELECT bool_or(my_column) FROM my_table

答案 1 :(得分:4)

您不能使用SUM(DATA),但可以将值(见下文)转换为int(0 = false,1 = true)。但是,使用EXISTS(...)可能更有效,特别是如果您对TRUE值的数量不感兴趣。

create table test(data boolean);
insert into test values(true), (false);
select sum(cast(data as int)) from test;
select exists(select * from test where data);

答案 2 :(得分:1)

要知道是否至少有1个真值:

select sum(cast(data as int)) > 0

这比现有解决方案更好,因为它可以嵌入到更大的查询中,可能包含group by和其他where子句