2017-08-22 1 views
1

Il existe des millions d'enregistrements dans le tableau. Et j'ai besoin de calculer le nombre de lignes dupliquées présentes dans ma table dans Redshift. Je pourrais y parvenir en utilisant la requête ci-dessous,Quel est le moyen le plus rapide de calculer le nombre de lignes dupliquées présentes dans Redshift Table

select 
    sum(cnt) from (select <primary_key> 
    , count(*)-1 as cnt 
from 
    table_name 
group by 
    <primary_key> having count(*)>1 
  1. Y at-il un moyen plus rapide pour atteindre le même?
  2. Existe-t-il un moyen de réaliser ceci dans une requête unique sans utiliser la sous-requête?

Merci.

+0

Comment définissez-vous les "lignes dupliquées"? Toutes les colonnes doivent-elles être en double ou existe-t-il une colonne contenant une clé unique permettant d'identifier un doublon plus facilement? –

Répondre

1

Vous pouvez essayer la requête suivante:

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

Si les critères de duplication est que répéter une clé primaire,

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

fonctionnerait, sauf si vous avez spécifié votre colonne comme primaire clé dans Redshift (elle n'applique pas de contrainte mais si vous marquez une colonne comme clé primaire count(distinct <primary_key>) renverra la même chose que count(1)même s'il y a une valeur en double es dans cette colonne