2010-09-14 48 views

回答

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); 
+0

被精確地:選擇存在(來自測試選擇*,其中數據=「真」); 它的工作原理!感謝您的回覆。 – gohohgle 2010-09-14 11:06:27

1

爲了知道是否有至少1真值:

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

這比越好存在解決方案,因爲它可以被嵌入到一個大的查詢,可能通過與其它其中含有基團子句

4

有幾個布爾特定aggregate functions您可以使用:bool_and,bool_or,every

在您的特殊情況下,您需要bool_or聚合。
查詢是如此簡單:

SELECT bool_or(my_column) FROM my_table