Если в USER есть несколько строк для одного пользователя с разными ID_COMPANY, используйте COUNT(DISTINCT ID_COMPANY) > 3. Если ID — уникальный ключ одной текущей записи, историю работы схема не хранит.
Выбор имен пользователей, работавших более трёх компаний
Если в USER есть несколько строк для одного пользователя с разными ID_COMPANY, используйте COUNT(DISTINCT ID_COMPANY) > 3. Если ID — уникальный ключ одной текущей записи, историю работы схема не хранит.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Даны две таблицы. Требуется написать SQL‑запрос, который вернёт имена тех пользователей, которые имели опыт работы более чем в трёх разных компаниях.
USER
ID NAME ID_COMPANY
COMPANY
ID_NAME
Ответ
Если в USER есть несколько строк для одного пользователя с разными ID_COMPANY, используйте COUNT(DISTINCT ID_COMPANY) > 3. Если ID — уникальный ключ одной текущей записи, историю работы схема не хранит.
Для модели с повторяющимся ID пользователя:
SELECT ID, NAME
FROM "USER"
GROUP BY ID, NAME
HAVING COUNT(DISTINCT ID_COMPANY) > 3;
Кавычки показаны для PostgreSQL/стандартного SQL; в другой СУБД синтаксис может отличаться. Имя должно быть согласовано для одного ID. Более нормализованная схема — users плюс employment(user_id, company_id), где и считается число разных компаний. Группировать только по NAME нельзя: совпадающие имена не доказывают, что это один человек.