Дана таблица:

Сгруппируйте строки по имени и оставьте группы, содержащие SQL и минимум два разных языка. Для приведённых данных запрос вернёт Nick и Ivan.

Короткий ответ

Что ответить на собеседовании

Сгруппируйте строки по имени и оставьте группы, содержащие SQL и минимум два разных языка. Для приведённых данных запрос вернёт Nick и Ivan.

Подробный разбор

Ответ с пояснениями

Условие

Дана таблица:

name lang
Nick C#
Nick SQL
Eva Rust
Eva C#
Vika SQL
Ivan Java
Ivan SQL

Написать запрос который выберет имена сотрудников, которые знают SQL и ещё хотя бы один любой язык. Считать, что один сотрудник — одно имя.

Ответ

Сгруппируйте строки по имени и оставьте группы, содержащие SQL и минимум два разных языка. Для приведённых данных запрос вернёт Nick и Ivan.

Пусть таблица называется employee_languages:

SELECT name
FROM employee_languages
GROUP BY name
HAVING COUNT(DISTINCT lang) >= 2
   AND MAX(CASE WHEN lang = 'SQL' THEN 1 ELSE 0 END) = 1;

DISTINCT защищает от повторяющихся строк одного языка. Согласно условию имя однозначно задаёт сотрудника; в реальной схеме группировать обычно нужно по его идентификатору. Сравнение регистра названий зависит от выбранных правил хранения и СУБД.

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

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

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

Подробнее