Найти всех учеников с одинаковыми именем и фамилией

69. Найти всех учеников с одинаковыми именем и фамилией

Условие задачи:
📌 Нужно написать SQL-запрос, который найдёт всех учеников, у которых совпадают имя и фамилия, и выведет:

  • name

  • surname

  • количество повторений

Предполагается, что структура БД такая же, как в предыдущей задаче, и данные об учениках хранятся в таблице Students.

Код:

-- Нужно найти учеников, у которых одинаковые name и surname,
-- и вывести имя, фамилию и количество повторений

📌 Пример 1:
Вход:
Students = [('Иван', 'Иванов'), ('Петр', 'Петров'), ('Иван', 'Иванов')]

Выход:
('Иван', 'Иванов', 2)

📌 Пример 2:
Вход:
Students = [('Анна', 'Смирнова'), ('Анна', 'Смирнова'), ('Анна', 'Смирнова')]

Выход:
('Анна', 'Смирнова', 3)


Спойлеры к решению

Подсказки
💡 Нужно сгруппировать записи по имени и фамилии.
💡 Количество повторений считается через COUNT(*).
💡 Оставить нужно только те группы, где количество больше 1.
💡 Для этого после GROUP BY используется HAVING.

Решение
SELECT
    name,
    surname,
    COUNT(*) AS repeat_count
FROM Students
GROUP BY name, surname
HAVING COUNT(*) > 1
ORDER BY surname, name;

Нужно сгруппировать учеников по name и surname, посчитать количество записей в каждой группе и оставить только те, где COUNT(*) > 1.