SQLLab
Все статьи

SQL для студентов IT-специальностей: что нужно знать к концу второго курса

Карта знаний SQL для будущих разработчиков, аналитиков и data engineers: от SELECT до оконных функций. Что спрашивают на стажировках и как туда попасть.

1 апреля 2026 г.·4 мин чтения·

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

Уровень 1: База (конец 1 курса)

Это минимум, без которого нет смысла переходить дальше.

SELECT и фильтрация

SELECT name, salary
FROM employees
WHERE department = 'Engineering' AND salary > 100000;

Нужно понимать: =, !=, >, <, BETWEEN, IN, LIKE, IS NULL.

Агрегатные функции и GROUP BY

SELECT department, COUNT(*) as count, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

Это самый используемый паттерн в аналитике. GROUP BY + агрегация — основа 80% отчётных запросов.

Сортировка и ограничение

SELECT name, score
FROM exam_results
ORDER BY score DESC
LIMIT 10;

Уровень 2: Работа с несколькими таблицами (1–2 курс)

JOIN

Нужно твёрдо понимать все типы:

-- INNER JOIN: только совпадения
SELECT o.id, c.name
FROM orders o
JOIN customers c ON o.customer_id = c.id;

-- LEFT JOIN: все из левой таблицы + совпадения из правой
SELECT c.name, COUNT(o.id) as order_count
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
GROUP BY c.name;

Контрольный вопрос: «Найдите клиентов без заказов». Если сразу написали LEFT JOIN + WHERE o.id IS NULL — уровень достаточный.

Подзапросы

SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

Уровень 3: Продвинутые техники (2 курс)

CTE (Common Table Expressions)

WITH top_customers AS (
    SELECT customer_id, SUM(amount) as total
    FROM orders
    GROUP BY customer_id
    ORDER BY total DESC
    LIMIT 100
)
SELECT c.name, tc.total
FROM top_customers tc
JOIN customers c ON tc.customer_id = c.id;

CTE делает сложные запросы читаемыми. На практике используется постоянно.

Оконные функции

SELECT
    name,
    department,
    salary,
    AVG(salary) OVER (PARTITION BY department) as dept_avg,
    salary - AVG(salary) OVER (PARTITION BY department) as diff_from_avg
FROM employees;

Оконные функции — один из самых частых вопросов на собеседованиях уровня junior/middle.

Нужно знать: ROW_NUMBER(), RANK(), DENSE_RANK(), LAG(), LEAD(), SUM() OVER, AVG() OVER.

Что спрашивают на стажировках

По статистике технических собеседований 2024 года, чаще всего встречаются:

  1. GROUP BY + агрегация — 90% собеседований
  2. JOIN (особенно LEFT JOIN) — 85%
  3. Подзапросы — 70%
  4. Оконные функции — 60% (даже на junior)
  5. CTE — 50%

Типичное задание: «У вас есть таблица транзакций. Найдите топ-3 клиента по сумме покупок за последние 30 дней в каждой категории товаров».

Для решения нужны: WHERE + DATE условие, GROUP BY, SUM, оконная функция RANK() OVER (PARTITION BY ...).

Как учиться эффективно

Не читайте учебник без практики. SQL — язык, его нужно писать. Минимум 30 минут практики в день работают лучше, чем 3 часа теории раз в неделю.

Используйте реальные датасеты. Абстрактные table1, col1 плохо тренируют интуицию. Работайте с данными, которые понимаете: продажи, пользователи, события.

Решайте задачи на leetcode/sql-ex.ru. После того как освоили синтаксис — переходите к задачам. Это единственный способ научиться думать запросами.

Изучите EXPLAIN ANALYZE. Когда запрос работает медленно — нужно понять почему. Это навык, который сразу выделяет вас среди других кандидатов на стажировку.

EXPLAIN ANALYZE
SELECT * FROM orders WHERE customer_id = 123;

Путь после университета

SQL нужен во всех IT-ролях, связанных с данными:

РольКакой SQL нужен
Backend-разработчикSELECT, JOIN, транзакции, индексы
Аналитик данныхВсё + оконные функции, CTE
Data EngineerВсё + оптимизация, партиционирование
BI-разработчикВсё + специфика конкретной СУБД
ML-инженерSELECT, JOIN, агрегации для подготовки данных

Хорошая новость: выучив SQL один раз на PostgreSQL, вы сможете работать с MySQL, SQLite, BigQuery, Redshift — синтаксис почти одинаковый.

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

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

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

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