Онлайн-редактор 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 прямо в сессии, рядом со схемой и запросом.
- После бесплатного входа — банк задач, режим интервью с таймерами, оценка кандидата и история собеседований.
Как провести собеседование
- Нажмите «Открыть редактор SQL» — сессия создастся с примером: таблица, данные и запрос.
- Замените пример своей схемой и тестовыми данными, опишите задачу в Markdown и отправьте ссылку кандидату — регистрация ему не нужна.
- Кандидат пишет запрос под вашими 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 тоже работает.
- Нужна ли регистрация?
- Нет. Создайте сессию, отправьте ссылку и начинайте. Вход нужен только для банка задач, режима интервью и истории.