數據系列專題視頻課程-處理重複數據發佈啦

 

 

 

 

 

 

數據處理視頻教程實戰專題

(數據去重)

 

 

 

 

課程地址:http://edu.51cto.com/course/course_id-2131.html 

 

 

作者:荷露叮咚網絡學苑

http://heludd.blog.51cto.com/

2014.5 北京






由於系統建設問題,用戶操作問題,接口問題等都會產生一些重複數據,當然有些是合理的冗餘。例如:系統程序未做唯一性約束(JS限制,數據庫約束),用戶雙擊提交按鈕時就提交了兩次,或者跨系統接口數據傳輸,只能追加數據。

當然,還有其它各種原因。

 處理方法:查看重複數據、查看不重複數據、刪除重複數據。

 本課程講解如何用Excel與數據庫(以Oracle爲例)進行數據查重、去重(去重有時需要取第一條記錄,有時需要取最新一條記錄,視不同應用情景採取不同方法)。

1. EXCEL處理重複數據

重複數據情況:單字段、多字段、全部字段。

1.1.  直接刪除法:

數據->數據工具->刪除重複項(直接刪除,但無法查看重複數據)

(可以選擇單列或連續的多列進行操作)

1.2.  高級篩選法:

1)只選擇(查看、不刪除)不重複的數據:

數據->排序和篩選中的高級->彈出高級篩選對話框,設置列表區域和條件區域,並勾選“選擇不重複記錄” ->確定。

2)顯示重複數據:

選擇“條件格式”->“突出顯示單元格規則”->“重複值”

選出重複值後再人工手動判斷保留哪些數據,刪除哪些數據。

1.3.  通過公式查詢:

查重複:

IF(COUNTIF(A:A,A2)>1,"重複","")

或者:

先排序再用公式IF(A2=A1, "重複","")

共計出現幾次:

=COUNTIF(B:B,B4)

第幾次出現:

=COUNTIF($B$2:B2,B2)

是否爲最新記錄:

=IF(G2=F2,"","")    第幾次出現與共計出現幾次相等時,爲最新記錄。

提示:多字段可用“&”合併成一字段進行操作哦;

Excel2013能支持100萬條記錄,但對機器內存要求高,數據量大容易死機。另外CSV格式文件支持數據量更大(但只支持單個sheet

 

 

 

 

 

2. ORACLE處理重複數據常用方法

2.1.  DISTINCT查詢不重複的數據

1)只選擇單一字段去重:

select distinct fieldname  from tablename

2)多字段去重:

select distinct fieldname1,  fieldname2 from tablename

3)全部字段去重:

select distinct * from tablename

2.2.  刪除重複記錄的方法:

1)新建一張表,把原來的表刪除

Create table newtablename as select distinct * from tablename;

Drop table oldtablename;

Rename table newtablename to oldtablename;

2)直接刪除重複數據(重要數據不建議直接刪除,需在擴展環境下做,或提前備份)

Delete from newtablename where newtablename.fieldname1 not in ()

提示:在ORACLE中,多字段可用“||”合併字符串進行處理哦。

 

2.3.  SQL: Group by

1)查看重複記錄(一字段重複):

select * from  tablename where fieldname in (select  fieldname from tablename group by  fieldname having count(fieldname)  > 1)

或者

select fieldname1,fieldname2,count(distinct  fieldname2) from tablename group  by fieldname2

2)查看重複記錄(多字段重複):

SELECT tablename.fieldname1,tablename.fieldname2,tablename.fieldname3

FROM tablename  RIGHT OUTER JOIN

           (SELECT fieldname1, fieldname2

          FROM tablename

          GROUP BY fieldname1, fieldname2

          HAVING COUNT(fieldname1) > 1 AND COUNT(fieldname2) > 1) T ON tablename.fieldname1  = T.fieldname1 AND tablename.fieldname2  = T.fieldname2

或者

select fieldname1,fieldname2,fieldname3  count(distinct fieldname1fieldname2) from tablename  group by fieldname1, fieldname2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章