Выбор ответа Middle Тестирование БД через SQL спрашивают часто обновлено

Поиск дублей

Вопрос

Какой запрос находит email, которые встречаются больше одного раза?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: SELECT email, count() FROM users GROUP BY email HAVING count() 1;. Условие на агрегат пишется в HAVING, который выполняется после GROUP BY.

Варианты ответа

  1. SELECT email, count(*) FROM users GROUP BY email HAVING count(*) > 1;правильный ответ
  2. SELECT email, count(*) FROM users WHERE count(*) > 1 GROUP BY email;
  3. SELECT DISTINCT email, count(*) FROM users GROUP BY email;
  4. SELECT email FROM users GROUP BY email ORDER BY count(*) DESC LIMIT 100;

Разбор

Условие на агрегат пишется в HAVING, который выполняется после GROUP BY. В WHERE агрегат использовать нельзя: это ошибка. DISTINCT с группировкой просто покажет счётчик у каждого email, включая единичные, а сортировка по count(*) поднимет дубли наверх, но не отфильтрует их. Для поиска без учёта регистра группируют по lower(email).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме