微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将组中的行与特定值 postgresql 进行比较

如何解决将组中的行与特定值 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 举报,一经查实,本站将立刻删除。