практикум · SQL

SQL на собеседовании

Отработаешь SQL-задачи о зарплатах, дублях, сериях дат и воронке найма. Научишься учитывать ничьи, пропуски и пустые значения.

Для старта: Уверенно пишешь SELECT, WHERE, GROUP BY и JOIN; понимаешь NULL

  • SQL
  • 5 модулей
  • 25 задач
  • 5 задач бесплатно

После регистрации откроется программа этого пути.

результаты практики

что освоишь на практике

Автор программы:
  • Выбирать второе значение, топ-N и лидеров группы с правильной обработкой ничьих
  • Сравнивать строки одной таблицы через self-join и агрегаты своей группы
  • Искать и склеивать дубли, не ломаясь на NULL и связях между таблицами
подробнее о пути и навыках

что получится

25 решений на PostgreSQL для типовых секций SQL-собеседования. Все задачи работают с одной HR-системой «Пульс»: сотрудниками, отделами, откликами, интервью и календарём посещений. Начнёшь со второй по величине зарплаты и топ-N, закончишь воронкой найма и когортами. Каждый запрос проверяется на скрытых наборах данных, поэтому подогнать ответ под известные строки не получится.

Для кого

Для аналитика, бэкенд- или дата-разработчика, который уже знает SELECT, WHERE и GROUP BY, но хочет отработать задачи SQL для собеседования без подсматривания в готовый ответ. Путь не пересказывает синтаксис с нуля: здесь важнее увидеть подвох в данных, выбрать устойчивый запрос и объяснить своё решение.

  • Уверенно писать SELECT, WHERE, GROUP BY и базовые JOIN
  • Понимать NULL и порядок выполнения частей SQL-запроса

что ещё отработаешь

  • Находить пропуски и серии дат через LEAD, generate_series и gaps and islands
  • Защищать агрегаты от деления на ноль, целочисленного деления и размножения строк
  • Считать воронки, накопительные итоги и когорты с оконными функциями SQL
программа

программа пути

Выбирай тему, которую хочешь закрепить. Задачи самостоятельны: каждую можно решить отдельно.

25 задач · 5 модулей
1.1
Вторая по величине зарплата
Классика собеседования: следующий уровень оклада, а не второй человек в списке.
решить без регистрации
1.2
Лучший в каждом отделе
Топ-1 в каждой группе: одна строка на отдел, ничья решается датой найма.
решить без регистрации
1.3
Выше среднего по отделу
Сравнение с агрегатом своей группы: среднее считается по отделу сотрудника, а не по компании.
1.4
Топ-3 уровня зарплат в отделе
Уровень оплаты вместо номера строки: одинаковые оклады делят один уровень, строк может быть больше трёх.
1.5
Зарабатывает больше руководителя
Self-join по manager_id: сравнение сотрудника со своим руководителем, а не с верхушкой компании.
2.1
Кандидаты с повторными откликами
Поиск дублей через GROUP BY + HAVING: отклики без почты дублями не считаются.
решить без регистрации
2.2
Первый отклик каждого кандидата
Дедупликация окном: одна строка на почту, а отклики без почты остаются каждый сам по себе.
2.3
Кто ни разу не проводил интервью
Анти-джойн на данных, где в связанной таблице есть NULL: NOT IN здесь возвращает пустоту.
2.4
Нагрузка интервьюеров
count(*) против count(колонки): сколько встреч провёл человек и сколько из них реально оценены.
2.5
Склеить повторные отклики
Скрипт из двух шагов: перевесить интервью дублей на основной отклик и только потом пометить дубли.
3.1
Сводка присутствия
Отмеченные дни против календарных: разница между count(*) и длиной промежутка сразу показывает пропуски.
3.2
Перерывы между отметками
Соседняя строка через LEAD: где между двумя отметками остался незакрытый день.
3.3
Календарь присутствия
generate_series плюс LEFT JOIN: в календаре обязаны быть и дни, когда не пришёл никто.
3.4
Пропущенные дни
Календарь на каждого сотрудника и анти-джойн к отметкам: какие дни внутри его отрезка остались пустыми.
3.5
Серии подряд идущих дней
Соберите отметки сотрудников в непрерывные серии и верните начало, конец и длину каждого интервала.
решить без регистрации
4.1
Воронка найма по отделам
Доля в процентах: целочисленное деление обнуляет её, а отдел без откликов роняет запрос делением на ноль.
4.2
Отклики и интервью по отделам
Размножение строк при соединении: наивный счётчик откликов растёт вместе с числом интервью.
4.3
Качество источников
WHERE против HAVING: дата отсекает строки до группировки, счётчик — группы после неё.
4.4
Доля отдела в фонде оплаты
Пустая сумма даёт NULL, а не ноль; доля считается от общего фонда, посчитанного в том же запросе.
4.5
Сводка по отделу
Три метрики из трёх таблиц в одной строке: соединить всё сразу — значит перемножить строки.
5.1
Отклики по месяцам
Соседний месяц через LAG и накопительный итог одним окном: обе функции считаются поверх агрегата.
5.2
Воронка этапов интервью
Сколько кандидатов дошло до каждого этапа и сколько отвалилось по дороге — LAG поверх агрегата.
5.3
Сколько ждали первой встречи
Разность дат по группе: от отклика до самой ранней встречи по нему.
5.4
Застрявшие отклики
Анти-джойн со сроком: активные отклики, по которым до сих пор не было ни одной встречи.
5.5
Когорты по месяцу отклика
Финал пути: когорта по месяцу отклика, доход до интервью и до найма, конверсия в процентах.
доступ к полной программе Платные модули этого пути входят в Premium. Условия подписки можно посмотреть на странице тарифов. от 490 ₽ / мес посмотреть тарифы первые 5 задач — бесплатно, без карты
первый шаг в этом пути

начни с задачи «Вторая по величине зарплата»

После регистрации откроется путь «SQL на собеседовании». Выбери модуль «Ранги и рекорды»: редактор и проверка доступны на странице задачи.

5 задач бесплатно

начать бесплатно

После регистрации откроется программа этого пути.

другие пути на этом языке