54. Найти дублирующиеся email среди клиентов-мужчин
Условие задачи:
В таблице customers необходимо найти дублирующиеся значения поля email, учитывая только клиентов с gender = 'male'.
Нужно вывести:
email;cnt— количество записей с этим email.
В результат должны попасть только email, встречающиеся более одного раза.
Спойлеры к решению
Подсказки
💡 Сначала отфильтруй только записи с
💡 Сгруппируй оставшиеся строки по
💡 Для каждой группы посчитай количество записей через
💡 Условия на результат группировки задаются через
gender = 'male'.💡 Сгруппируй оставшиеся строки по
email.💡 Для каждой группы посчитай количество записей через
COUNT(*).💡 Условия на результат группировки задаются через
HAVING.Решение
SELECT
email,
COUNT(*) AS cnt
FROM customers
WHERE gender = 'male'
GROUP BY email
HAVING COUNT(*) > 1;
Условие:
WHERE gender = 'male'
ограничивает выборку клиентами-мужчинами.
Затем:
GROUP BY email
объединяет строки с одинаковыми email, а:
HAVING COUNT(*) > 1
оставляет только те адреса, которые встречаются более одного раза.
Если email может быть NULL и такие значения не должны считаться дублями, можно добавить:
WHERE gender = 'male'
AND email IS NOT NULL