Skip to content

Instantly share code, notes, and snippets.

@Biazus
Last active February 18, 2023 17:29
Show Gist options
  • Save Biazus/689afc20220739e45fc5bdb7caab88c4 to your computer and use it in GitHub Desktop.
Save Biazus/689afc20220739e45fc5bdb7caab88c4 to your computer and use it in GitHub Desktop.
Find / Remove duplicates PostgreSQL
CREATE TABLE customer (
customer_id serial PRIMARY KEY,
first_name VARCHAR ( 50 ) NOT NULL,
last_name VARCHAR ( 50 ) NOT NULL,
address VARCHAR ( 50 ) NOT NULL
)
INSERT INTO customer (first_name, last_name, address) values ('John', 'B', 'x Avenue');
INSERT INTO customer (first_name, last_name, address) values ('John', 'B', 'x Avenue');
INSERT INTO customer (first_name, last_name, address) values ('Maria', 'Pena', 'Cal St.');
INSERT INTO customer (first_name, last_name, address) values ('Maria', 'Pena', 'Cal St.');
INSERT INTO customer (first_name, last_name, address) values ('Maria', 'Pena', 'Cal St.');
SELECT COUNT(*)
FROM customer as a
WHERE a.customer_id IN
(SELECT customer_id FROM
(SELECT
customer_id,
ROW_NUMBER() OVER
(PARTITION BY first_name, last_name, address
ORDER BY customer_id) dup
FROM customer) as c
WHERE dup > 1);
--three records will be removed:
DELETE
FROM customer as a
WHERE a.customer_id IN
(SELECT customer_id FROM
(SELECT
customer_id,
ROW_NUMBER() OVER
(PARTITION BY first_name, last_name, address
ORDER BY customer_id) dup
FROM customer) as c
WHERE dup > 1);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment