SQLLab
Все статьи

SQL тест для Junior-разработчика: что проверять

Как составить SQL-тест для Junior-разработчика или аналитика: темы, задачи, критерии оценки начального уровня.

25 января 2026 г.·4 мин чтения·

Junior — особая категория кандидатов. От них не ждут знания оконных функций или навыков оптимизации запросов. Но базовое владение SQL необходимо: иначе стажировка превратится в курс обучения за счёт компании.

Эта статья поможет HR-специалисту и техническому менеджеру понять, что именно проверять у Junior-кандидатов, и составить адекватный тест.

Что должен уметь Junior (минимум)

Прежде чем составлять тест, зафиксируем минимальный порог:

  1. Написать SELECT с условием WHERE
  2. Соединить две таблицы через JOIN
  3. Сгруппировать данные и применить агрегатную функцию
  4. Отсортировать результат
  5. Понять простую схему базы данных

Это не много — но кандидаты, прошедшие базовый 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 JOIN25%Верное соединение таблиц
LEFT JOIN20%Верное применение + работа с NULL
Подзапрос10%Бонусный балл

Проходной балл для Junior: 60–65%. Это значит, что базу кандидат знает, а остальному научится на практике.

Что НЕ спрашивать у Junior

  • Оконные функции (это Middle+)
  • EXPLAIN и оптимизация запросов (это Senior)
  • Транзакции и уровни изоляции
  • Специфика конкретных СУБД (если не заявлено в вакансии)

Завышенные требования к Junior ведут к тому, что компания долго не может закрыть вакансию и теряет хороших кандидатов с потенциалом.

Формат проведения теста

Для Junior рекомендуем онлайн-тест, а не live-кодинг. Стресс на живом интервью сильнее влияет на Junior-кандидатов, и вы рискуете получить заниженный результат.

Дайте 30–40 минут, реальную базу данных (или симулятор), и пусть кандидат работает в комфортном темпе.

Хотите, чтобы ваши Junior-кандидаты пришли на интервью подготовленными? SQLlab.ru предлагает обучение с нуля до уверенного Junior за несколько недель практики.

Похожие статьи

Попробуй на практике

Тренажёр с реальными задачами — бесплатно и без регистрации

Открыть тренажёр →