Группировка по t1 с HAVING COUNT(*) > 1 вернёт две строки: значение 3 встречается дважды, значение 5 также встречается дважды.
Как найти повторяющиеся значения в table1?
Группировка по t1 с HAVING COUNT(*) > 1 вернёт две строки: значение 3 встречается дважды, значение 5 также встречается дважды.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дана таблица table1(t1 INTEGER), содержащая значения 1, 3, 3, 4, 5, 5. Напишите SQL-запрос, который вернёт только повторяющиеся значения и число их вхождений. NULL в данном наборе нет.
Ответ
Группировка по t1 с HAVING COUNT(*) > 1 вернёт две строки: значение 3 встречается дважды, значение 5 также встречается дважды.
SELECT t1, COUNT(*) AS occurrences
FROM table1
GROUP BY t1
HAVING COUNT(*) > 1
ORDER BY t1;
WHERE отбирает отдельные строки до группировки, поэтому условие на число вхождений находится в HAVING. DISTINCT сам по себе покажет уникальные значения, но не позволит отличить повторяющиеся от одиночных. Если появятся NULL, нужно отдельно решить, считать ли их повторяющимся значением; COUNT(*) учитывает такие строки.