sql >> Databáze >  >> RDS >> Sqlserver

Jak najít duplicitní záznamy pomocí klauzule Seskupit podle a mít v SQL Server - SQL Server / Výukový program TSQL část 132

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



  1. Jak mohu odstranit pomocí INNER JOIN s SQL Server?

  2. Databázový model pro systém zasílání zpráv

  3. Rychlý příspěvek o SQLite UPSERT a nové klauzuli RETURNING.

  4. DevOps:DBA nebo vývojář – Jak dosáhnout správné rovnováhy