如何排除数据集中的某些组合模式?

时间:2019-05-08 19:35:01

标签: sql oracle

我有一个数据集,如果他/她的成绩不是“ F”,我就必须摆脱他/她。在此示例中,Brian的成绩不是“ F”,因此,Brian不应出现在我的成绩中。只有杰克(Jack)应该出现,因为我要排他地“ F”级学生。

我在SQL中使用NOT IN,EXCEPT函数进行了尝试,但无法解决该问题(请单击以查看屏幕截图)。

CODE Example

如上所述,我只期待杰克的成绩,因为布莱恩的成绩不是“ F”。我将衷心感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

如果只需要'Jack',则可以使用聚合:

select name
from t
group by name
having min(grade) = max(grade) and min(grade) = 'F';

如果您实际上想要原始行,则可以使用not exists

select t.*
from t
where not exists (select 1 from t t2 where t2.name = t.name and t2.grade <> 'F');