Выбор имен пользователей, работавших более трёх компаний

Если в 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 нельзя: совпадающие имена не доказывают, что это один человек.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее