Junior — особая категория кандидатов. От них не ждут знания оконных функций или навыков оптимизации запросов. Но базовое владение SQL необходимо: иначе стажировка превратится в курс обучения за счёт компании.
Эта статья поможет HR-специалисту и техническому менеджеру понять, что именно проверять у Junior-кандидатов, и составить адекватный тест.
Что должен уметь Junior (минимум)
Прежде чем составлять тест, зафиксируем минимальный порог:
- Написать SELECT с условием WHERE
- Соединить две таблицы через JOIN
- Сгруппировать данные и применить агрегатную функцию
- Отсортировать результат
- Понять простую схему базы данных
Это не много — но кандидаты, прошедшие базовый SQL-курс, должны справляться уверенно.
Темы для теста
Тема 1: Простая выборка
-- Таблица: products(id, name, price, category, in_stock)
-- Задача: выведите название и цену всех товаров категории 'Электроника',
-- которые есть в наличии, отсортируйте по цене по убыванию
SELECT name, price
FROM products
WHERE category = 'Электроника'
AND in_stock = true
ORDER BY price DESC;
Что проверяем: WHERE с несколькими условиями, ORDER BY.
Тема 2: Агрегация
-- Таблица: orders(id, customer_id, product_id, quantity, total_price, order_date)
-- Задача: посчитайте количество заказов и суммарную выручку по каждому клиенту
SELECT
customer_id,
COUNT(*) AS order_count,
SUM(total_price) AS total_revenue
FROM orders
GROUP BY customer_id;
Что проверяем: COUNT, SUM, GROUP BY — основа любой аналитики.
Тема 3: JOIN
-- Таблицы: employees(id, name, department_id)
-- departments(id, name)
-- Задача: выведите имя сотрудника и название его отдела
SELECT e.name AS employee_name, d.name AS department_name
FROM employees e
JOIN departments d ON d.id = e.department_id;
Что проверяем: базовый INNER JOIN, алиасы таблиц.
Тема 4: LEFT JOIN и NULL
-- Задача: найдите отделы, в которых нет ни одного сотрудника
SELECT d.name
FROM departments d
LEFT JOIN employees e ON e.department_id = d.id
WHERE e.id IS NULL;
Что проверяем: LEFT JOIN, поиск отсутствующих записей через NULL.
Тема 5: Подзапрос (для более сильных Junior)
-- Задача: найдите товары, цена которых выше средней цены в их категории
SELECT name, category, price
FROM products p
WHERE price > (
SELECT AVG(price)
FROM products
WHERE category = p.category
);
Это уже задача на границе Junior/Middle — если кандидат справляется, это хороший сигнал.
Типичные ошибки Junior-кандидатов
Неправильное применение WHERE vs HAVING:
-- Неверно: WHERE не работает с агрегатными функциями
SELECT department_id, COUNT(*)
FROM employees
WHERE COUNT(*) > 5 -- ошибка!
GROUP BY department_id;
-- Верно:
SELECT department_id, COUNT(*)
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;
Забывают про GROUP BY при использовании агрегации:
-- Частая ошибка: выбирают поле без группировки
SELECT department_id, name, COUNT(*) -- name не в GROUP BY!
FROM employees
GROUP BY department_id;
Путают INNER JOIN и CROSS JOIN — не понимают разницы между соединением по условию и декартовым произведением.
Как оценивать Junior
Для Junior-уровня используйте упрощённую шкалу:
| Задача | Вес | Критерий зачёта |
|---|---|---|
| Простая выборка | 20% | Верный результат |
| Агрегация | 25% | Верные агрегатные функции и GROUP BY |
| INNER JOIN | 25% | Верное соединение таблиц |
| LEFT JOIN | 20% | Верное применение + работа с NULL |
| Подзапрос | 10% | Бонусный балл |
Проходной балл для Junior: 60–65%. Это значит, что базу кандидат знает, а остальному научится на практике.
Что НЕ спрашивать у Junior
- Оконные функции (это Middle+)
- EXPLAIN и оптимизация запросов (это Senior)
- Транзакции и уровни изоляции
- Специфика конкретных СУБД (если не заявлено в вакансии)
Завышенные требования к Junior ведут к тому, что компания долго не может закрыть вакансию и теряет хороших кандидатов с потенциалом.
Формат проведения теста
Для Junior рекомендуем онлайн-тест, а не live-кодинг. Стресс на живом интервью сильнее влияет на Junior-кандидатов, и вы рискуете получить заниженный результат.
Дайте 30–40 минут, реальную базу данных (или симулятор), и пусть кандидат работает в комфортном темпе.
Хотите, чтобы ваши Junior-кандидаты пришли на интервью подготовленными? SQLlab.ru предлагает обучение с нуля до уверенного Junior за несколько недель практики.