V některých situacích si potřebujeme udělat přehled o tom, jaká data se nacházejí v tabulce. Nebo si třeba chceme zkontrolovat jestli se v tabulce nenachází duplikace hodnot, které tam nechceme. Jak vypsat seznam takových duplicitních záznamů?

Jak zjistit duplikaci řádků v SQL tabulce?

Úlohu budu demonstrovat na jednoduchém příkladu. Mějme tabulku se zákazníky, která se jmenuje DimCustomer (viz. obrázek níže). Naše databáze zákazníků má zhruba 20000 záznamů a chceme ověřit jestli se v databázi nenacházejí zákazníci, kteří jsou tam vícekrát, protože každého zákazníka chceme evidovat pouze jednou.

sql duplikace hodnot - příklad

Nejprve si musímě uvědomit, přes které hodnoty budeme duplicity zjišťovat. Nemůžeme to dělat třeba přes sloupec jméno, protože to může mít spousta lidí stejné. Nevhodný je také způsob testovat duplicity osob přes email, protože stejného člověka můžeme mít v databázi 2x s různými emaily a na duplicitu bychom nepřišli. Nejspolehlivější by bylo testovat duplicity přes nějaký jedinečný identifikátor osoby, třeba rodné číslo. To ale my v tabulce nemáme. Nezbývá tedy než vymyslet jiný způsob.

Řekněme, že v našem případě pro ilustrativní účely by mělo být poměrně spolehlivé pokud řekneme, že by se měli vyskytovat jedinečné kombinace hodnot přes Jméno, Příjmení, Pohlaví a Datum narození.

SELECT
[FirstName]
,[LastName]
,[BirthDate]
,[Gender]
,COUNT(*)
FROM [AdventureworksDW2016CTP3].[dbo].[DimCustomer]
GROUP BY
[FirstName]
,[LastName]
,[BirthDate]
,[Gender]
HAVING COUNT(*) >1

Skript je celkem jednoduchý a necháme si vypsat všechny osoby, které mají počet shodných kombinací FirstName, LastName, BirthDate, Gender větší než 1. Výsledkem je 5 záznamů a u všech záznamů došlo k situaci, že se v tabulce DimCustomer nacházejí tito lidé 2x (počet duplikací = 2)

pocet duplikaci v sql tabulce

5/5 - (1 vote)

Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako freelancer. Pracoval jsem dříve také jako BI developer, finanční controller a analytik. Vše pro společnosti z oblasti IT, bankovnictví, consultingu a výroby. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a občas neúspěšně odpálím pár balónků v golfu 🏌️

Již cca 10 let zapisuji na tento web různé návody určené zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Business intelligence, korporátních financí a reportingu.

🔥 Přihlašte se do naší Excel facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published. Required fields are marked *