2017-08-22 5 views
1

テーブルには何百万というレコードがあります。 Redshiftで私のテーブルにある重複行の数を計算する必要があります。私はレッドシフトテーブルに存在する重複行の数を計算するためのより速い方法

select 
    sum(cnt) from (select <primary_key> 
    , count(*)-1 as cnt 
from 
    table_name 
group by 
    <primary_key> having count(*)>1 
  1. は、同じことを達成するためのより高速な方法があり、クエリの下に使用してそれを達成するだろうか?
  2. サブクエリを使用せずに単一のクエリでこれを実現する方法はありますか?

ありがとうございます。プライマリとしてあなたの列を指定している場合を除き、複製の基準は唯一の、そして

SELECT count(1)-count(distinct <primary_key>) FROM your_table

がうまくいく主キーを繰り返している場合

SELECT Column_name, COUNT(*) Count_Duplicate 
FROM Table_name 
GROUP BY Column_name 
HAVING COUNT(*) > 1 
ORDER BY COUNT(*) DESC 
+0

「重複する行」はどのように定義しますか?すべての列は重複する必要がありますか、重複をより簡単に識別できる一意のキーを含む列はありますか? –

答えて

1

次のクエリを試すことができますRedshiftのキー(制約は適用されませんが、列を主キーとしてマークすると、重複する値があってもはcount(1)と同じになります)この列の

関連する問題