如何解决将组中的行与特定值 postgresql 进行比较
编辑:当 5 或 9 不存在时,我需要一个空值(或另一个标志)
我有 3 列。部分、状态和名称。一个 SECTION 内最多有 10 行(状态 1 到 10)。我必须比较 SECTION 中 STATUS 5 和 9 的 NAME 值。然后指出这两个名称(状态 5 和 9)对于每个部分是否相同。
部分状态名称 1 5 一个 1 6 一 1 9 乙 2 4 c 2 5 天 2 9 天 2 10 天 3 5 e 3 10 e
期望的输出
Section equalnames
1 no
2 yes
3 null/flag
解决方法
我会使用布尔值而不是字符串,并且只使用带过滤的聚合:
select group,min(name) = max(name) as names_equal_flag
from t
where status in (5,9)
group by group;
请注意,group
是一个非常糟糕的列名称,因为它是一个 SQL 关键字。我假设您在实际数据中有更合适的名称。
如果你想要一个字符串,你可以使用 case
:
select group,(case when min(name) = max(name) then 'yes' else 'no' end) as names_equal_flag
from t
where status in (5,9)
group by group;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。