Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come trovare record duplicati usando la clausola Raggruppa per e Ave in SQL Server - Esercitazione su SQL Server / TSQL Parte 132

Scenario:

Stai lavorando come sviluppatore di SQL Server. Devi scrivere la query per la tabella dbo.Customer che dovrebbe restituire i record duplicati e il conteggio dei record duplicati.


Soluzione:

Puoi utilizzare la funzione di aggregazione Raggruppa per e Conte per trovare tutti i record duplicati nella tabella e contare.

Diciamo di avere una tabella dbo.Customer con la definizione e i dati seguenti. Vorremmo trovare il record se è duplicato dalle colonne FName,LName e 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)
 
 Scriviamo la nostra query, abbiamo incluso tutte le colonne nell'elenco di selezione con count(*) e quindi raggruppate per le stesse colonne. Alla fine utilizzeremo la clausola Have per filtrare i record duplicati.


SELECT fname, 
       lname, 
       countryshortname, 
       Count(*) AS RecordCount 
FROM   dbo.customer 
GROUP  BY fname, 
          lname, 
          countryshortname 
HAVING Count(*) > 1
 Come dai dati possiamo vedere che l'unico record duplicato da FName, LName e Country short name è 'Raza', 'M', 'PK' e ha un totale di due record come restituito dalla nostra query.

Come trovare record duplicati utilizzando Raggruppa per e Avendo clausola in SQL Server