69. Найти всех учеников с одинаковыми именем и фамилией
Условие задачи:
📌 Нужно написать SQL-запрос, который найдёт всех учеников, у которых совпадают имя и фамилия, и выведет:
namesurnameколичество повторений
Предполагается, что структура БД такая же, как в предыдущей задаче, и данные об учениках хранятся в таблице 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.