Сгруппируйте строки по full_name и оставьте группы с COUNT(*) ≥ 2 через HAVING. В результате каждое повторяющееся имя появится один раз.
Поиск имён, встречающихся более одного раза
Сгруппируйте строки по full_name и оставьте группы с COUNT(*) ≥ 2 через HAVING. В результате каждое повторяющееся имя появится один раз.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужно вывести те имена, которые присутствуют в таблице минимум дважды.
CREATE TABLE people (
person_id INT,
full_name VARCHAR(100)
);
Пример данных:
1, Игорь
2, Анна
3, Петр
4, Игорь
...
Для получения результата используйте агрегирующую функцию и условие HAVING.
Ответ
Сгруппируйте строки по full_name и оставьте группы с COUNT(*) ≥ 2 через HAVING. В результате каждое повторяющееся имя появится один раз.
SELECT full_name, COUNT(*) AS occurrences
FROM people
WHERE full_name IS NOT NULL
GROUP BY full_name
HAVING COUNT(*) >= 2;
Для показанных данных в результате будет Игорь с количеством 2. Если нужен только столбец имён, уберите счётчик из SELECT, оставив его в HAVING. Регистр и правила равенства определяются collation; нормализация пробелов или регистра не выполняется автоматически этим запросом.