如何参考一个table有重复的参考值和不同的状态

How consult a table with repeated reference value and different status

我有一个 table,它有两个条目用于相同的主机名和两个不同的状态,例如:

但是我的查询必须具有以下逻辑:

  1. 搜索所有主机名而不考虑状态
  2. Select 仅包含 1 个条目的主机名 POSTPRODUCTION

我试过类似的方法:

AND (STATUS = 'POSTPRODUCTION' AND STATUS <> 'PRODUCTION')

但是结果没有成功,下面是这个table咨询的例子:

SELECT
    HOSTNAME
FROM
    CI
WHERE
    STATUS = 'PRODUCTION'

如果我没理解错的话,你可以使用一个window函数来计算每个主机的行数:

select t.*
from (select t.*,
             count(*) over (partition by HOSTNAME) as cnt
      from ci t
     ) t;

那么第二个条件是:

where cnt = 1 and status = 'POSTPRODUCTION'