我在postgres中有一个名为“ sales”的表,其中有一个名为“ region”的列。我试图找到一种方法,从同一张表的每个“区域”中删除90%的记录。
我正在使用以下查询。但是在postgres中同样无法正常工作,并且该表没有主键/唯一键列
ODS_Load_Date
谁能对此提供更好的解决方案。
答案 0 :(得分:0)
如果表中有唯一的ID,则可以执行以下操作:
delete
from t
using (select t.*,
row_number() over (partition by region order by region) as seqnum, -- I always include order by
count(*) over (partition by region) as cnt
from t
) tt
where t.id = tt.id and
tt.seqnum < 0.9 * cnt;