SQL Duplikace hodnot v tabulce s příkladem – Jak vypsat seznam duplicitních hodnot?

Poslední aktualizace:

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 hodnot?

Jak zjistit duplikaci řádků v 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

Rate this article

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Category: RSS 1 Exclude Užitečné SQL skripty Základy SQL

About Ing. Jan Zedníček - BI Developer, Finance controller

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích Kentico Software v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval jako finanční controller třeba v Aero Vodochody a Sberbank nebo jako manažer dluhopisového programu v investiční skupině Unicapital. Po práci si rád zahraju tenis, volejbal, šachy, zajdu do posilovny a rád ochutnávám dobré rumy. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Nebojte se položit dotaz nebo reagovat do komentáře. Přihlašte se do naší nové Excel facebook skupiny Excel CZ/SK diskuse »

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.