具有不同列值的行的Postgres查询结果

时间:2019-02-03 02:56:13

标签: sql postgresql sum distinct

我具有由一列称为kitdata这是一个人的名字区分在同一个表的数据的行。所有其他列都有各种数据。但是,在所谓的“resultid”(数字)列有每个人kitdata名称相同的值,我需要消除输出结果这些行。所以,如果凯文和特里在其相应的行的相同resultid数,然后将数据未显示在结果中。名为kevin的kitdata是主要的kit。我需要从我的结果消除“特丽”重复数据。

许多变化。包括!= 1

SELECT
  fulln, scm, kitname, sum (resultid)
FROM ftdnamc WHERE kitname !='terri'
GROUP BY
  fulln, scm, kitname
HAVING
  sum (resultid) != 0

期望的结果是消除与kevin和terri kitdata相比具有相同resultid的数据。

1 个答案:

答案 0 :(得分:0)

NOT EXISTS将消除resultid列中另一行具有相同值的行:

SELECT
  fulln, scm, kitname, resultid
FROM ftdnamc f
WHERE NOT EXISTS (
    SELECT 1 FROM ftdnamc WHERE kitname <> f.kitname AND resultid = f.resultid
)

如果您需要SUM列resultid:

SELECT
  fulln, scm, kitname, SUM(resultid)
FROM ftdnamc f
WHERE NOT EXISTS (
    SELECT 1 FROM ftdnamc WHERE kitname <> f.kitname AND resultid = f.resultid
)
GROUP BY fulln, scm, kitname