← Назад к вопросам
SQL запрос для поиска дубликатов
2.0 Middle🔥 161 комментариев
Условие
Дана таблица employees с колонками: id, name, email, department. Напишите SQL запрос, который находит все дублирующиеся email адреса.
Ожидаемый результат
Список email адресов, которые встречаются более одного раза.
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение
Поиск дубликатов в базе данных — частая задача при тестировании, валидации данных и подготовке тест-кейсов. Правильно написанный SQL запрос позволяет быстро выявить проблемы с уникальностью данных.
Основной запрос
SELECT email, COUNT(*) as count
FROM employees
GROUP BY email
HAVING COUNT(*) > 1
ORDER BY count DESC;
Объяснение:
SELECT email, COUNT(*)— выбираем email и считаем количество повторенийFROM employees— из таблицы employeesGROUP BY email— группируем по email адресуHAVING COUNT(*) > 1— фильтруем группы с дубликатамиORDER BY count DESC— сортируем по количеству повторений
Расширенный запрос
SELECT e.*
FROM employees e
WHERE e.email IN (
SELECT email
FROM employees
GROUP BY email
HAVING COUNT(*) > 1
)
ORDER BY e.email;
Показывает все записи с дублирующимися email адресами.
С оконной функцией
SELECT *,
ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) as rn
FROM employees
WHERE email IN (
SELECT email
FROM employees
GROUP BY email
HAVING COUNT(*) > 1
)
ORDER BY email, id;
Нумерует дубликаты для удаления. Легко удалить: DELETE FROM employees WHERE rn > 1
Best Practices:
- Используй
HAVING COUNT(*) > 1для фильтрации - Включай ID в результаты
- Сортируй для удобства анализа
- Создавай индексы на часто проверяемые колонки
- Помни, что NULL != NULL в SQL
Эти запросы работают в PostgreSQL, MySQL, SQL Server и других СУБД.
Похожие вопросы
- Проверка палиндрома
- Преобразование числа в римское
- Определение цикла в связном списке
- Сумма элементов массива
- Написать CSS селектор
- Написать автотест на вход в систему
- K-й элемент с конца списка
- Каждый N-й элемент
- Поиск дубликатов в массиве
- Реверс слов в предложении
- Поиск пиковых элементов
- Сортировка пузырьком
- Две суммы
- Генерация всех правильных скобочных последовательностей
- Среднее арифметическое
- Тестирование формы регистрации
- Наибольший общий делитель
- Проверка на подпоследовательность
- Второй по величине элемент
- SQL запрос с JOIN