Выявление и удаление повторяющихся email‑адресов

Подсчитайте email через GROUP BY, дубли отберите HAVING COUNT(*) > 1. Для удаления оставьте запись с минимальным id в каждой группе.

Короткий ответ

Что ответить на собеседовании

Подсчитайте email через GROUP BY, дубли отберите HAVING COUNT(*) > 1. Для удаления оставьте запись с минимальным id в каждой группе.

Подробный разбор

Ответ с пояснениями

Условие

В таблице Person хранятся email‑адреса пользователей. Возможны случаи, когда один и тот же email встречается несколько раз. Требуется:

  1. Подсчитать, сколько раз каждый email встречается в таблице.
  2. Вывести список email‑ов, количество их вхождений превышает единицу.
  3. Удалить из таблицы все дубли, оставив только одну запись для каждого уникального email‑а.

Пример входных данных

+----+-------------------+
| id | email             |
+----+-------------------+
| 1  | john@example.com  |
| 2  | bob@example.com   |
| 3  | john@example.com  |
+----+-------------------+

Ожидаемый результат

+----+-------------------+
| id | email             |
+----+-------------------+
| 1  | john@example.com  |
| 2  | bob@example.com   |
+----+-------------------+
CREATE TABLE Person (
    id INT PRIMARY KEY,
    email VARCHAR(255)
);

Ответ

Подсчитайте email через GROUP BY, дубли отберите HAVING COUNT(*) > 1. Для удаления оставьте запись с минимальным id в каждой группе.

Подсчёт и просмотр:

SELECT email, COUNT(*) AS occurrences
FROM Person
GROUP BY email;

SELECT email, COUNT(*) AS occurrences
FROM Person
GROUP BY email
HAVING COUNT(*) > 1;

Пример удаления для PostgreSQL:

WITH duplicates AS (
    SELECT id, ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
    FROM Person
)
DELETE FROM Person
USING duplicates
WHERE Person.id = duplicates.id AND duplicates.rn > 1;

Перед удалением просмотрите те же строки через SELECT, сохраните резервную копию и проверьте внешние ссылки. Нужны транзакция и защита от конкурентного появления дублей. Уточните правила регистра и NULL; показанная группировка считает все NULL одной группой. После очистки добавьте подходящее уникальное ограничение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее