gpt4 book ai didi

postgresql - 是否有类似 group by 的东西也允许我查询每个组中的各个行?

转载 作者:行者123 更新时间:2023-11-29 13:08:58 25 4
gpt4 key购买 nike

我使用 PostgreSQL 11.4,我想解决以下问题:

假设我有下表:

foo | bar
---------
a null
a 2
a 8
a 3
b 2
c null
c 8
c 5
c 2

我想获取 foo 中的所有字段,其中至少有一个 null 值和 bar 中的一个非空值。

因此预期的结果将是 ac 因为它们是唯一具有至少一个空值和一个非空值的键

请注意,我在这里没有唯一的主键,所以我不能真正对基于 foo 的表进行多次连接并检查每个连接或其他内容。

有没有人知道如何解决这个问题?

如有任何信息,我们将不胜感激。

最佳答案

一种解决方案是使用两个 EXISTS 条件:

select distinct foo
from the_table t1
where exists (select *
from the_table t2
where t2.bar is null
and t2.foo = t1.foo)
and exists (select *
from the_table t3
where t3.bar is not null
and t3.foo = t1.foo)

另一种选择是按 foo 分组并计算行数:

select foo
from the_table
group by foo
having count(*) filter (where bar is null) > 0
and count(*) filter (where bar is not null) > 0;

虽然第一个可能更快

关于postgresql - 是否有类似 group by 的东西也允许我查询每个组中的各个行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57303967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com