PostgreSQL如何对结果进行分组以使所有行都必须为真?
Posted
技术标签:
【中文标题】PostgreSQL如何对结果进行分组以使所有行都必须为真?【英文标题】:PostgreSQL how to group results so all rows must be true? 【发布时间】:2021-04-06 12:43:56 【问题描述】:在 PostgreSQL 中,我有一个可以返回 1 行或多行布尔值的查询。如果所有行都为真,我如何针对此结果集运行选择查询以获取返回真的单个布尔值?如果此结果集中的一行或多行为 false,则返回 false。
【问题讨论】:
【参考方案1】:您正在描述布尔聚合,Postgres 为其提供了内置函数,例如 bool_or()
和 bool_and()
:
select bool_and(mybool) as myresult
from (
--- your query, that returns a boolean column called "mybool"
) t
【讨论】:
如何在 PgAdmin 中运行它? “mybool”去哪儿了?你有例子吗? 我明白了。 mybool 是我查询的结果。它看起来像它的作品!是的! @user840930:是的。您没有显示您的查询,因此我无法提供完整的解决方案。 我明白了。 mybool 位于 select 的末尾和 from 子句之前。【参考方案2】:使用not exists
可能会更快:
select not exists (select 1
from <your query>
where not mybool
)
【讨论】:
以上是关于PostgreSQL如何对结果进行分组以使所有行都必须为真?的主要内容,如果未能解决你的问题,请参考以下文章
如何在AngularJS ui-grid中对分组行进行排序?
如何根据多列的顺序对 PostgreSQL 中的聚合进行分组?