Онлайн-редактор SQL для собеседований

Проверьте знание SQL на живых данных: создайте таблицы, заполните их и попросите кандидата написать запрос — результат оба увидите сразу после запуска. Бесплатно и без регистрации, подходит для собеседований аналитиков и бэкенд-разработчиков.

Бесплатно, без регистрации

Пример кода

CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT, dept TEXT, salary INTEGER);
INSERT INTO employees (name, dept, salary) VALUES
  ('Анна', 'dev', 250000),
  ('Борис', 'dev', 180000),
  ('Вера', 'qa', 150000);

SELECT dept, MAX(salary) AS top_salary
FROM employees
GROUP BY dept
ORDER BY top_salary DESC;

Вывод

┌──────┬────────────┐
│ dept │ top_salary │
├──────┼────────────┤
│ dev  │ 250000     │
│ qa   │ 150000     │
└──────┴────────────┘

Что умеет редактор

  • SQLite 3.36: весь скрипт выполняется на сервере в базе в памяти, результат запроса видят все участники.
  • Поддерживаются оконные функции (ROW_NUMBER, RANK, SUM() OVER), общие табличные выражения (WITH) и RETURNING.
  • Совместное редактирование в реальном времени: до 5 участников, правки и курсоры видны сразу.
  • Условие задачи в Markdown прямо в сессии, рядом со схемой и запросом.
  • После бесплатного входа — банк задач, режим интервью с таймерами, оценка кандидата и история собеседований.

Как провести собеседование

  1. Нажмите «Открыть редактор SQL» — сессия создастся с примером: таблица, данные и запрос.
  2. Замените пример своей схемой и тестовыми данными, опишите задачу в Markdown и отправьте ссылку кандидату — регистрация ему не нужна.
  3. Кандидат пишет запрос под вашими CREATE TABLE и INSERT и запускает весь скрипт: результат вы видите вместе.

Типичные задачи на собеседовании

  • Найти вторую по величине зарплату — подзапросом, через LIMIT и OFFSET или оконной функцией.
  • Топ-N записей в каждой группе с помощью ROW_NUMBER() OVER (PARTITION BY …).
  • LEFT JOIN: найти клиентов без заказов и объяснить, чем это отличается от NOT IN при NULL.
  • Найти дубликаты через GROUP BY и HAVING и оставить по одной записи.
  • Посчитать накопительный итог по датам оконной функцией SUM() OVER.
  • Посчитать удержание пользователей по месяцам регистрации.

Ограничения

  • Это SQLite, а не PostgreSQL или MySQL: нет ILIKE, схем и специфичных типов вроде JSONB, а функции работы с датами устроены иначе.
  • База создаётся заново при каждом запуске: схему и данные пишите в том же скрипте перед запросом.
  • Автотестов для SQL нет — сверяйте результат запроса с ожидаемым вместе с кандидатом.
  • Один запуск ограничен 3 секундами и 64 КБ вывода.

Частые вопросы

Какая СУБД используется?
SQLite 3.36 с базой в памяти. Каждый запуск выполняет весь скрипт с нуля, поэтому результат воспроизводим.
Где взять таблицы и данные?
Напишите CREATE TABLE и INSERT в начале скрипта — как в примере на этой странице. Кандидат пишет свой запрос ниже.
Поддерживаются ли оконные функции?
Да: ROW_NUMBER, RANK, DENSE_RANK, агрегаты с OVER, а также общие табличные выражения WITH.
Можно ли проверить UPDATE и DELETE?
Да. Скрипт выполняется целиком, поэтому после изменения данных добавьте SELECT — и вы увидите результат. RETURNING тоже работает.
Нужна ли регистрация?
Нет. Создайте сессию, отправьте ссылку и начинайте. Вход нужен только для банка задач, режима интервью и истории.

Редактор для других языков