在工作中通常会处理一些异常的数据,异常数据中重复数据最为常见。下面介绍一种用ROW_NUMBER()处理异常数据的办法。可以挑选出其中的一条保留其他数据清理掉。
如图
如图中数据所示每一个accept 都有多个,但是只需要一个。
我们可以通过一下语句挑选出来
-- 去除重复accept
SELECT * from (
SELECT ROW_NUMBER() over(PARTITION by z.accept ) rn ,z.*
FROM data202201 z WHERE z.accept in ('20220102101345967000136808','20220101075951255000599003','20220101075952488000826935') ) z WHERE z.rn=1;
可以将筛选出的记录插入到新的表中,也可以在旧表中delete rn>1 的重复记录。