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

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ů přes SQL skript?

Jak zjistit duplikaci řádků v SQL tabulce?

Úlohu budu demonstrovat na jednoduchém příkladu. Mějme dimenzní 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)
Rubrika: Užitečné SQL skripty Základy SQL

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

Jmenuji se Honza Zedníček a působím jako data engineer freelancer. Během cca 10 let jsem zde shromáždil přes 600 IT case studies, průvodců, návodů a tipů určených zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Data Engineeringu, korporátních financí a reportingu. Zaměřuji se především na Microsoft technologie (on-prem i cloud) a různé synergické efekty v rámci jejich produktového portfolia pro dataře a finanční profesionály. Věnuji se také dalším platformám a významným hráčům z oblasti open source technologií. 🔥 Pokud vám tento článek pomohl, ocením referenci na vašem webu nebo zmínku v komunitě. A mám pro vás ještě tip: řešíte-li nějaký zapeklitý Excel problém, 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 *