Languages
[Edit]
EN

PostgreSQL - find duplicated values in multiple columns

0 points
Created by:
Dirask Admin - Marvin
1850

In this article, we would like to show you how to find duplicated values in multiple columns in PostgreSQL.

Quick solution:

SELECT 
    "column1", COUNT("column1"),
    "column2", COUNT("column2"),
    "columnN", COUNT("columnN")
FROM
    "table_name"
GROUP BY 
    "column1",
    "column2",
    "columnN"
HAVING 
    (COUNT("column1") > 1) AND 
    (COUNT("column2") > 1) AND
    (COUNT("columnN") > 1);

Practical example

To show how to find duplicated values in multiple columns, we will use the following table:

PostgreSQL - example data used to find duplicated values in multiple columns
PostgreSQL - example data used to find duplicated values in multiple columns

Note:

At the end of this article you can find database preparation SQL queries.

Example

In this example, we will display duplicated users and countries where:

  • name_quantity - number of duplicated names,
  • country_quantity - number of duplicated countries.

Note:

This works only when both name and country in a row are duplicated.

Query:

SELECT 
    "name", COUNT("name") AS "name_quantity",
    "country", COUNT("country") AS "country_quantity"
FROM
    "users"
GROUP BY 
    "name",
    "country"
HAVING 
       (COUNT("name") > 1) AND 
       (COUNT("country") > 1);

Result:

PostgreSQL - find and count duplicated values in multiple columns - result
PostgreSQL - find and count duplicated values in multiple columns - result

Note:

Notice that Chris user both name_quantity and country_quantity equals 2 because one user is from a different country.

Database preparation

create_tables.sql file:

CREATE TABLE "users" (
	"id" SERIAL PRIMARY KEY,
	"name" VARCHAR(100) NOT NULL,
	"email" VARCHAR(100) NOT NULL,
	"country" VARCHAR(15) NOT NULL
);

insert_data.sql file:

INSERT INTO "users"
	("name", "email", "country")
VALUES
	('Tom', 'tom1@email.com', 'Poland'),
	('Tom', 'tom2@email.com', 'Poland'),
    ('Tom', 'tom3@email.com', 'Poland'),
    ('Kim', 'kim1@email.com', 'Vietnam'),
    ('Kim', 'kim2@email.com', 'Vietnam'),
    ('Chris', 'chris1@email.com', 'Spain'),
	('Chris', 'chris2@email.com', 'Spain'),
	('Chris', 'chris3@email.com', 'USA');

PostgreSQL - problems

PostgreSQL - find duplicated values in multiple columns
Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join