Выбор ответа Middle Тестирование БД через SQL спрашивают часто обновлено
Поиск дублей
Вопрос
Какой запрос находит email, которые встречаются больше одного раза?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: SELECT email, count() FROM users GROUP BY email HAVING count() 1;. Условие на агрегат пишется в HAVING, который выполняется после GROUP BY.
Варианты ответа
SELECT email, count(*) FROM users GROUP BY email HAVING count(*) > 1;правильный ответSELECT email, count(*) FROM users WHERE count(*) > 1 GROUP BY email;SELECT DISTINCT email, count(*) FROM users GROUP BY email;SELECT email FROM users GROUP BY email ORDER BY count(*) DESC LIMIT 100;
Разбор
Условие на агрегат пишется в HAVING, который выполняется после GROUP BY. В WHERE агрегат использовать нельзя: это ошибка. DISTINCT с группировкой просто покажет счётчик у каждого email, включая единичные, а сортировка по count(*) поднимет дубли наверх, но не отфильтрует их. Для поиска без учёта регистра группируют по lower(email).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.