Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.

Tip of the Day
Language: SQL Server
Expertise: Beginner
Aug 8, 2000



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Counting Duplicate Rows

How do I count the number of duplicate items in a table?

Lets break down your question into several steps. First, let's create a sample table using the following code:

create table dups
	i int

declare @i int

select @i = 0

while (@i < 35)
   insert into dups(i) values (cast (rand() * 50  as int))
	select  @i = @i + 1
Now, let's find rows that are duplicates. For that we can use a simple group by statement:
select i,count(*) as num_records
from dups
group by i
having count(*)  > 1
My sample data produced the following result set:
i           num_records 
----------- ----------- 
0           2
5           2
18          2
22          2
27          2
31          2
34          2
44          2
49          2
This identifies the rows that have duplicates. But it does not return the total number of duplicates in the table. The first change we must make is to recognize the above rows that show 2 contain only one duplicate.

So we want a query that basically sums up the duplicates from the above query. To do so, we take the previous query and can put that in the from statement as a derived table. We then can use the sum function to create the total for us:

select sum(num_dups)
from (select i,count(*)-1 as num_dups
from dups
group by i
having count(*)-1  > 0) as mydups
DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date