75. Найти дублирующиеся комбинации имени и возраста
Условие задачи:
Дана таблица Person с полями:
name;age.
Необходимо вывести комбинации name и age, которые встречаются в таблице более одного раза.
Для каждой такой комбинации также нужно вывести количество повторений.
Код:
Person
-----------------
name
age
Спойлеры к решению
Подсказки
💡 Сгруппируй строки одновременно по
💡 Для каждой группы посчитай количество строк через
💡 Для фильтрации результатов группировки используй
💡 Дубликатом считается комбинация, которая встречается больше одного раза.
name и age.💡 Для каждой группы посчитай количество строк через
COUNT(*).💡 Для фильтрации результатов группировки используй
HAVING.💡 Дубликатом считается комбинация, которая встречается больше одного раза.
Решение
SELECT
name,
age,
COUNT(*) AS duplicate_count
FROM Person
GROUP BY
name,
age
HAVING COUNT(*) > 1;
Группировка:
GROUP BY
name,
age
объединяет строки с одинаковой парой значений name и age.
Затем:
HAVING COUNT(*) > 1
оставляет только те группы, которые встречаются более одного раза.
Например, для данных:
name | age
-----+----
Ivan | 20
Ivan | 20
Ivan | 30
Petr | 25
Petr | 25
результат будет:
name | age | duplicate_count
-----+-----+----------------
Ivan | 20 | 2
Petr | 25 | 2