【SAS】キーが複数存在するテーブルで重複レコードを抽出する
重複レコードの数を数える
キーが複数あるようなテーブルで、重複しているレコードを取り出したいことがある。
そんなときは、まず重複するレコード数を数える。
たとえば、ID1とID2の2つを指定することでレコードが一意になるテーブルで、ID1とID2のセットで重複がいくつあるか数える場合は次のSQLが使える。
PROC SQL; CREATE TABLE DUPLICATION_COUNT AS SELECT ID1 ,ID2 ,count(*) as COUNT_of_ROW label = "重複行数カウント" FROM DATA_IN GROUP BY ID1, ID2 HAVING count(*) > 1 ; QUIT;
このSQLを実行するとID1とID2のセットで重複しているものだけを抽出できる。
ついでに何行重複していたかをCOUNT_of_ROWに格納している。
重複レコードを取り出す
上記のDUPLICATION_COUNTテーブルができていれば、ID1とID2で元テーブル(DATA_IN)とinner joinしてあげれば、重複しているレコードを取り出すことができる。