删除CTE表中具有条件的记录



我有一个CTE表,它看起来像这样:

id  prsn  A  B  C
1    2    0  0  1
1    3    0  1  0
2    1    0  1  1
2    1    0  1  0
2    2    1  0  1
3    1    0  1  0
3    1    0  1  1

我想删除在列"中重复的记录;id";以及";prsn";确定要删除哪个记录的条件是它的列";C">0

因此,如果在";id";以及";prsn";我想用";C">0

预期输出:

id  prsn  A  B  C
1    2    0  0  1
1    3    0  1  0
2    1    0  1  1
2    2    1  0  1
3    1    0  1  1

我在jupyter 中使用CTE表

要测试记录是否唯一,可以使用SQL中的row_number((函数创建列D。这使您可以重置每个唯一记录的行号,这样您就可以删除行号未重置且>1.所以这将是:

with CTE as
(select row_number() over (partition by id, prsn order by id, prsn) as D from yourdata)
delete from CTE where D > 1 and C = 0

最新更新