2017-09-23 22 views
0

日付の1/3から1/5の行の唯一の違いが日付フィールドである例の表を参照してください。Redshiftで重複したフィールドを削除するにはどうすればいいですか?

 
Date, ID, State, Amount 
1/1/2017, 123, A, 1 
1/2/2017, 123, B, 1 
1/3/2017, 123, C, 1 
1/4/2017, 123, C, 1 
1/5/2017, 123, C, 1 
1/6/2017, 345, B, 1 

列ID、州、金額の重複行を削除するにはどうすればよいですか?

 
Date, ID, State, Amount 
1/1/2017, 123, A, 1 
1/2/2017, 123, B, 1 
1/3/2017, 123, C, 1 
1/6/2017, 345, B, 1 

答えて

0
select min(date) as date, id, state, amount 
from  some_table_name_you_never_disclosed 
group by id, state, amount; 

ところで、dateはSQL92予約キーワードであるので、あなたはその列名を変更することもできます。

0

あなたは

CREATE TEMPORARY TABLE temp 
AS 
SELECT DATE, 
     ID 
FROM (SELECT DATE, 
      ID, 
      ROW_NUMBER() OVER (PARTITION BY ID,State,Amount ORDER BY DATE ASC) AS rnk 
     FROM your_table_name) 
WHERE rnk > 1 

その後

DELETE 
FROM your_table_name USING temp 
WHERE your_table_name.date = temp.date 
AND your_table_name.id = temp.id 
としてdelete文を使用して重複したレコードを削除する一時テーブルとストアを作成することができます
関連する問題