Scénář:
Pracujete jako vývojář SQL Serveru. Musíte napsat dotaz na tabulku dbo.Customer, která by měla vrátit duplicitní záznamy a počet duplicitních záznamů.Řešení:
K nalezení všech duplicitních záznamů v tabulce a počtu můžete použít agregační funkci Seskupit podle a Počet.Řekněme, že máme tabulku dbo.Customer s níže uvedenou definicí a daty. Rádi bychom našli záznam, pokud je duplicitní ve sloupcích FName,LName a CountryShortName.
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), SaleAmount Int) GO --Insert Rows in dbo.Customer Table insert into dbo.Customer Values ( 1,'Raza','M','PK',10), (2,'Rita','John','US',12), (3,'Sukhi','Singh',Null,25), (4,'James','Smith','CA',60), (5,'Robert','Ladson','US',54), (6,'Alice','John','US',87), (6,'Raza','M','Pk',Null)
Napíšeme náš dotaz, zahrneme všechny sloupce do výběrového seznamu pomocí count(*) a poté seskupíme podle stejných sloupců. Nakonec použijeme klauzuli Having k filtrování záznamů, které jsou duplicitní.
SELECT fname, lname, countryshortname, Count(*) AS RecordCount FROM dbo.customer GROUP BY fname, lname, countryshortname HAVING Count(*) > 1
Z dat můžeme vidět, že jediný záznam, který je duplicitní podle FName, LName a krátkého názvu země je 'Raza', 'M', 'PK' a má celkem dva záznamy, jak je vráceno naším dotazem.
Jak najít duplicitní záznamy pomocí klauzule Seskupit podle a mít na serveru SQL Server