Что нового
История обновлений и улучшений SQL Arena. Самое свежее — сверху.
- Задачи на создание представления (VIEW) больше не отклоняют верные решения: проверка идёт по результату — колонкам и строкам представления, а не по дословному совпадению текста запроса с эталоном. Теперь засчитываются эквивалентные формулировки (например, DISTINCT вместо GROUP BY/HAVING или другой порядок соединений).
- Сообщения об ошибке стали точнее: вместо неверного «Строки дублируются, добавьте GROUP BY» (когда группировка уже есть, а не хватает лишь ограничения вывода) теперь описывается реальный симптом — что именно не так с результатом. Конкретные подсказки по исправлению даёт AI-наставник.
- AI-наставник больше не считает иной, но равносильный подход ошибкой: он опирается на результат, а не на форму эталонного решения, и не советует переписать корректный запрос только потому, что эталон выглядит иначе.
- В недельном и месячном рейтинге герой и ранг участника теперь совпадают с профилем: показывается фактический, наработанный за всё время, а не пересчитанный по силе за период. Само число силы подписано «за неделю» / «за месяц», чтобы не путать его с общей силой.
- Исправлена проверка задач, которые ошибочно требовали определённого порядка строк, хотя в условии о сортировке не сказано: верные ответы больше не отклоняются с ошибкой «те же строки, но не в том порядке» (например, «Капитан или гость»).
- Справочник стал полным: у каждой команды и функции теперь есть отдельная статья — от SELECT и JOIN до оконных функций, JSONB, индексов и транзакций. Все статьи доступны на русском, английском, испанском и португальском.
- В справочнике появились перекрёстные ссылки «См. также»: каждая команда ведёт к родственным (ROUND ↔ FLOOR ↔ CEIL, percentile_cont ↔ percentile_disc, семейства JSONB и JOIN) — учить темы группами стало удобнее.
- Статьи блога обзавелись оглавлением с быстрым переходом к разделам и якорными ссылками, а сами страницы стали открываться заметно быстрее. Добавлены хлебные крошки и ссылка «В справочнике» для перехода между статьёй и шпаргалкой.
- Появилась страница «О проекте» с описанием платформы.
- В схемах задач у колонок появились понятные подсказки: наведите на «?» рядом с полем — и увидите, что оно означает (например «Дата покупки», «Идентификатор заказа»). Описания добавлены ко всем колонкам во всех схемах и учитывают контекст таблицы.
- Шпаргалка внутри задачи теперь подстраивается под сложность: на средних и сложных задачах из неё убраны тривиальные пункты (SELECT, ORDER BY, LIMIT), чтобы список не отвлекал и показывал только релевантное.
- Переработан справочник: вместо облака тегов — двухпанельный вид с липким списком категорий слева (иконки и счётчики, подсветка активного раздела при прокрутке), а сами карточки стали читаемее — описание крупнее и контрастнее, второстепенные ссылки («Статья», «См. также») приглушены, чтобы не перебивать содержание. Сам «Справочник» в боковом меню поднят наверх — под «Песочницу».
- Страница тарифов для подписчиков переработана: теперь видны все планы, текущий помечен, а преимущества и другие периоды доступны для сравнения и перехода — вместо короткого сообщения «у вас премиум».
- Рейтинг теперь по умолчанию недельный: таблица сбрасывается каждый понедельник, так что у всех есть достижимый топ, а не вечно одни и те же лидеры. Вкладки идут «Неделя → Месяц → Всё время», подиум показывается в каждой, а строка «ваше место» работает в любом периоде. Вкладка «Всё время» осталась залом славы.
- Вычитан и исправлен ряд фактических неточностей в англоязычных, испанских и португальских версиях статей справочника (поведение ascii(), CAST, DATE_TRUNC по часовым поясам, округление, JSONB и др.).
- Премиум-пользователей больше не перебрасывает на страницу оплаты при открытии премиум-задачи (раньше при кратком сбое связи случался ложный редирект со словами «у вас уже есть премиум»).
- Множество правок в мобильном справочнике: теги категорий теперь в одну прокручиваемую строку, в примерах появилась цветная подсветка синтаксиса, исправлено перекрытие кнопки «Копировать» и работа фильтра «Все», поле поиска получило аккуратную единую подсветку, а код-блоки подстраиваются под светлую и тёмную тему. Также убрана лишняя серая линия в боковом меню.
- Адреса задач стали человекочитаемыми: вместо «/trainer/tasks/603» теперь «/trainer/tasks/select-all-companies» — понятнее и удобнее делиться ссылкой. Старые ссылки по номеру продолжают работать.
- Переработана панель навигации по задаче: компактный сегментированный блок «Назад · сложность · Вперёд» (уровень задачи показан цветной точкой), кнопка «Собеседование» придвинута к навигации, единый стиль наведения у всех кнопок.
- Кнопка «Следующая» больше не приводит на скрытые экзаменационные задачи с ошибкой «Задача не найдена» — навигация теперь пропускает экзаменационный пул.
- Выровнена серая линия-разделитель между вкладками задачи (Задание/Отправки/AI Mentor) и вкладками редактора запросов.
- Награда за обратную связь: подтверждённый баг-репорт или полезное предложение приносят 1–7 дней премиума. Подсказка появилась в боковом меню и на странице «Обратная связь».
- Новая подсказка в тренажёре: если во вложенном запросе колонка незаметно «цепляется» к внешней таблице (коррелированная ссылка) — например, из-за опечатки в имени колонки — показываем жёлтое предупреждение. Запрос при этом выполняется как есть, ничего не блокируется.
- Список задач больше не «мигает» при загрузке: карточки сразу открываются с правильными номерами, порядком и счётчиками — без прочерков и перескакивания, которые появились после оптимизации.
- Задача «Итоговый баланс по счетам» больше не отклоняет верное решение. В скрытых проверочных данных встречался незадокументированный тип операции, из-за которого корректный запрос мог получить вердикт «строк столько же, но значения другие». Проверка приведена в соответствие с условием задачи — только Deposit и Withdrawal.
- AI-наставник больше не выдумывает несуществующую ошибку, когда задача проверяется на скрытых данных: он опирается на эталонное решение и честно говорит, если запрос верен на видимых данных, а дело в крайнем случае — вместо ложного разбора.
- Зверь запроса на странице тренажёра снова живой: в карточке опять вращающаяся 3D-модель — после оптимизации загрузки там показывалась статичная картинка.
Большая работа над скоростью: страницы и каталог задач теперь загружаются заметно быстрее, особенно на медленном интернете и мобильных.
- Оптимизация загрузки: страницы открываются быстрее, тяжёлые элементы (редактор, 3D-звери, картинки) подгружаются умнее, а данные передаются компактнее.
Починен коварный баг вывода: при «SELECT *» с JOIN одинаковые имена колонок (например, два id) больше не путаются — на PostgreSQL и MySQL значения каждой колонки теперь верные, дубли подписаны таблицей (Doctor.id, Appointment.id).
- Результат запроса с одинаковыми именами колонок (классика — «SELECT *» по JOIN с двумя id): на PostgreSQL и MySQL значения колонок-тёзок больше не подменяются друг другом и не теряются. Дубликаты теперь подписаны таблицей-источником (Doctor.id, Appointment.id), как уже было в ClickHouse.
Большое обновление главной и тарифов: новый лендинг с 3D-зверем запроса, бесплатный тариф теперь включает все задачи уровня Easy (в том числе лёгкие вопросы с собесов), а Premium можно взять помесячно — разовой оплатой без автопродления.
- Полностью обновлённая главная: hero с 3D-зверем запроса, строка с цифрами по каталогу, сравнение одного запроса в трёх диалектах (PostgreSQL · MySQL · ClickHouse), лестница рангов, тизер PvP-дуэлей и FAQ прямо на странице.
- Раздел «Собеседование» открыт для всех: лёгкие задачи с собесов можно решать бесплатно, более сложные вопросы — в Premium.
- Помесячный Premium: можно оплатить один месяц (790 ₽ / $12) разово — без автопродления. Чем длиннее период, тем дешевле месяц: 3 месяца −38%, 6 месяцев −58%.
- Бесплатный тариф переработан: все задачи уровня Easy теперь бесплатны навсегда (включая лёгкие вопросы с реальных собеседований), а задачи Medium, Hard и Expert доступны в Premium.
- Текст страницы тарифов обновлён под текущую модель, а в боковом меню появилась ссылка «Тарифы» для пользователей без Premium.
- Задача на удаление групп без предстоящих туров (sa-55): эталонное решение теперь удаляет дочерние строки перед родительскими, поэтому правильный ответ проходит на скрытых данных без ошибки внешнего ключа.
Точнее проверка: на нескольких задачах больше нельзя «проскочить» небрежным решением — учтены крайние случаи (несколько билетов у одного фаната, аренда на стыке года).
- Эти задачи теперь проверяются на скрытых данных и в MySQL, и в ClickHouse — решения, подогнанные под числа из примера, больше не проходят.
- «Количество фанатов на каждом концерте» и похожие задачи: фанат с несколькими билетами на один концерт теперь считается один раз; правильное решение больше не требует сортировки, которой не было в условии.
- «Расходы членов клуба в 2005 году» и разбивка по жанрам: уточнено правило — учитывается полная стоимость выдачи (daily_fee × days), даже если срок аренды заканчивается уже в следующем году.
Новый диалект — ClickHouse. Больше 560 задач теперь можно решать на ClickHouse наравне с PostgreSQL и MySQL.
- Диалект ClickHouse: выбираешь ClickHouse в задаче, пишешь и проверяешь решение на живом движке — так же, как на PostgreSQL и MySQL. Более 560 задач доступны на ClickHouse (каталог, собеседования, экзамен).
- Фильтр ClickHouse в каталоге задач — быстро отобрать задачи для практики на CH.
- Выбор диалекта стал удобным выпадающим списком с версией движка (PostgreSQL 16 · MySQL 8.0 · ClickHouse 24) вместо ряда кнопок.
- Автодополнение и подсказки по ошибкам в редакторе понимают ClickHouse — функции и типы (countIf, groupArray, argMax, quantile, UInt/DateTime64/Array…) и сообщения об ошибках движка.
Починены ложная ошибка «Слишком много запросов» при отправке решений и задачи в диалекте MySQL.
- «Зверь запроса» для гостей: вместо кнопки «Пробудить зверя», которая без входа не работала, теперь размытое превью блока зверя с приглашением войти.
- Отправка решений: исчезла ложная ошибка «Слишком много запросов. Попробуй через N секунд» при первой же отправке — лимит частоты по ошибке делился между всеми пользователями сразу, теперь он персональный.
- Диалект MySQL: 24 задачи (аптека, программа лояльности авиакомпании, сеть отелей и другие) падали с ошибкой сервера ещё до проверки решения — скрытые проверочные данные содержали PostgreSQL-синтаксис. Все задачи снова решаются.
«Зверь запроса» теперь грузится на телефоне за секунды вместо минут, а на странице задач сразу видно его изображение.
- Профиль: фото теперь можно удалить — как загруженное вручную, так и подтянутое из Google / Яндекс / GitHub. После удаления показывается плитка с инициалами.
- 3D-модели зверей оптимизированы и теперь весят примерно в 40 раз меньше — на телефоне они появляются за секунды, а не за минуты.
- Пока 3D-модель грузится, на её месте показывается анимация загрузки; в карточке зверя на странице задач сразу видно его изображение вместо пустого квадрата.
- Рейтинг: колонка позиции и изменения места больше не наезжают друг на друга при больших числах (3–4 значные ранги и дельты).
«Зверь запроса» — твой личный 3D-питомец, который растёт вместе с силой; а топ-3 рейтинга теперь живой 3D-подиум.
- «Зверь запроса»: у каждого игрока появился персональный 3D-монстр. Он меняет облик по мере роста ранга и силы, а его характеристики собираются из решённых задач. Зверя видно на странице тренажёра, в профиле и в рейтинге.
- Рейтинг: топ-3 теперь живой 3D-подиум — чемпионы стоят на пьедестале со своими зверями (модель можно покрутить мышью), а у первого места корона.
- Музыка для фокуса прямо на странице задачи: компактное радио (lo-fi, Ambient, Synthwave, станция «Код» и коричневый шум) под схемой БД — чтобы легче сосредоточиться.
- Новая типографика: единый шрифт Geologica для заголовков и текста, со встроенной кириллицей и офлайн-загрузкой.
- Навигация: «Экзамен» поднялся выше в меню, а пункт «Прогресс» убран — его кнопка «Детальный прогресс» теперь на твоей карточке в рейтинге.
- Названия задач: фрагменты в
обратных кавычкахтеперь отображаются как аккуратные моно-чипы. - Режим собеседования: история сессий теперь показывает выбранные правила строгости и заработанный бонус к силе для каждой попытки; тексты обновлены под настраиваемую строгость (бонус 0–50%).
- Шкала рангов перебалансирована: пороги силы для всех рангов увеличены вдвое (Титан теперь от 40 000 силы). Ваша сила не меняется — ранг просто пересчитывается под новую шкалу.
Подсказки к неверному ответу стали честнее: никаких советов про WHERE или JOIN, которых нет в твоём запросе.
- Подсказки при неверном ответе больше не упоминают конструкции, которых нет в запросе (никаких «поправь WHERE» или «попробуй LEFT JOIN», если их у тебя нет) — текст подстраивается под твой SQL.
- Задачи со скрытым набором данных больше не показывают число строк или столбцов, противоречащее видимой таблице результата.
- Понятные сообщения вместо внутренних/англоязычных строк проверки; реже ложное предложение «войдите» при обычной ошибке.
Режим собеседования теперь настраивается: выбираешь строгость — и бонус к Power растёт вместе с ней.
- Собеседование: настраиваемая строгость (без переключения вкладок/фокуса, без вставки) и длительность. Бонус к Power до +50% — и показывается вживую при выборе. Без правил — это просто практика на время, ничего не прерывает.
- AI-ментор на бесплатном тарифе: 10 подсказок и разборов ошибок всего, а не 10 в день. Когда заканчиваются — предложение Premium прямо в панели подсказок.
- Язык интерфейса снова определяется по стране при первом заходе.
- После прохождения в режиме собеседования задача сразу отмечается решённой, а сила обновляется — больше не нужно жать «Отправить» повторно.
Все задачи теперь решаются написанием SQL — новые форматы и фильтры каталога, новые наборы задач.
- Новые типы задач: поиск ошибок, проверка качества данных, проектирование индексов, переписывание запросов, проектирование схем с ограничениями, транзакции и блокировки, права доступа (GRANT/REVOKE).
- Новые фильтры каталога: по формату задачи, сложности, статусу решения, диалекту (PostgreSQL/MySQL) и избранному.
- Задачи на права доступа проверяются по итоговому набору привилегий (принцип минимальных привилегий).
- Задачи на транзакции проверяются в реальной конкуренции: безопасные списания, атомарный перевод, идемпотентность, уровни изоляции и блокировки строк.
- Новые наборы задач: аналитика такси, изменение данных, проектирование схем, рекурсивные иерархии и продуктовые события.
- Выбранный диалект (PostgreSQL/MySQL) запоминается и сохраняется при переходе между задачами.
- У большинства задач есть превью ожидаемого результата.
- Сотни новых пошаговых подсказок и AI-ментор, который разбирает ошибки в вашем запросе.
- Все форматы стали код-пишущими: вместо выбора ответа вы пишете настоящий SQL.
- Условия задач — живые бизнес-сценарии на русском и английском; уровни сложности откалиброваны.
- AI-генерация задач: описания теперь читаются как живой бизнес-сценарий и больше не выдают решение — убраны формулы, имена SQL-функций и сухие перечисления таблиц прямо в тексте.
- Примеры компаний на главной и в Премиуме теперь зависят от языка: на русской версии — российские работодатели, на остальных — международные (Tesla, Uber, Microsoft, Spotify, Meta), чьи задачи у нас есть.
- Убрана лишняя плашка о приватности на странице профиля пользователя.
Интерфейс заговорил на всех языках Евросоюза — 21 новый язык.
- Добавлены 21 язык Евросоюза: немецкий, французский, итальянский, нидерландский, польский, румынский, греческий, чешский, венгерский, шведский, датский, финский, словацкий, болгарский, хорватский, литовский, словенский, латышский, эстонский, ирландский и мальтийский. Язык можно выбрать в переключателе или он определится автоматически по стране и языку браузера.
- Страница «Сообщить о баге» стала «Обратная связь» (адрес /feedback) с двумя вкладками: «Сообщить об ошибке» и «Предложить улучшение». Предложения по улучшению приходят команде так же, как баг-репорты.
- В настройках профиля у подписки теперь видна дата окончания, а формулировка про «разовую оплату» убрана.
- Всплывающий список выбора языка стал компактнее по высоте.
- Профили снова открываются из рейтинга для авторизованных пользователей — приватность скрывает профиль только от анонимных посетителей. URL-имя профиля больше нельзя удалить, поэтому профиль всегда доступен по ссылке.
- Оплата иностранной картой (вкладка Visa/MC) на русском сайте теперь корректно считается в долларах и проводится через Paddle, а не открывает ЮKassa с рублёвой суммой.
Сертификация: сдай экзамен под таймером и получи проверяемый сертификат уровня.
- Экзамены на сертификат: три уровня (Основы / Практик / Эксперт), по 8 задач, отдельный таймер на каждую, проходной балл 7 из 8. На каждую попытку выдаётся свой набор данных, поэтому заучить ответ заранее нельзя.
- Проверяемый сертификат с QR-кодом, который ведёт на ваш публичный профиль; раздел с сертификатами появился в профиле.
- Удаление аккаунта прямо из настроек профиля.
- Настройки профиля переоформлены в чистом списочном стиле; у Premium-пользователей появилась анимированная рамка вокруг аватара.
- Проверка решений усилена на 324 задачах: оценка идёт на скрытом наборе данных, поэтому решение больше нельзя подогнать под видимый пример.
- Автодополнение в редакторе теперь подсказывает имена CTE, объявленных через WITH, при наборе FROM/JOIN.
- AI Mentor теперь видит ошибку и текущий запрос даже после «Запустить» — появилась кнопка «Разобрать ошибку», чтобы разобрать любую ошибку, включая синтаксические.
- Задача №91: проверка усилена скрытым набором данных — решение больше нельзя подогнать под пример (например через LIMIT или фиксированную длину).
- Задача №13: из условия убрана подсказка с готовым фильтром — решение нужно вывести самому.
- Карта навыков теперь покрывает все категории задач (добавлены CTE, DDL, транзакции, оптимизация) и стала крупнее и читаемее.
- Подсказка «что подтянуть» в карте навыков указывает на тему с наибольшим числом нерешённых задач, а не на случайную.
- В графике активности за год месяцы снова подписаны полностью, а не обрезаны до одной буквы.
- Решения, возвращающие интервал времени (например, разница двух времён), больше не падают с ошибкой при отправке.
- Задача №88: данные исправлены — рейсы из Парижа теперь имеют разную длительность, а не три одинаковые строки.
- Откат изменений (Ctrl+Z) в редакторе теперь работает отдельно для каждой вкладки запроса.
- Задача №624: в описание добавлено требование округлить среднюю цену до 2 знаков после запятой.
- Подсказки SQL-редактора больше не дублируют одни и те же варианты после перехода между задачами.
- Задача №621: клубы без посетителей теперь учитываются в результате с нулевой выручкой.
- Задаче №831 поменяли уровень сложности с экспертного на средний.
SQL Arena теперь многоязычный: английский, испанский и португальский с отдельными адресами страниц и автоопределением региона.
- Переключатель языка: русский, английский, español (Испания и Латинская Америка) и português.
- При первом заходе сайт открывается на языке вашего региона; выбор запоминается.
- У каждого языка свой адрес страницы (/en, /es, /es-419, /pt-br) — такими ссылками можно делиться.
- Оплата Premium в местной валюте: рубли, доллары, евро или реалы — в зависимости от региона.
- Английская версия сайта полноценная; испанский и португальский переводятся постепенно.
Задачи на создание таблиц принимают любую корректную форму записи, подсказки при ошибке стали по делу, а одна задача с неоднозначным ответом исправлена.
- Задача на поиск самой популярной пары курсов: тестовые данные допускали несколько равноправных ответов, а проверка принимала лишь один. Теперь у задачи единственный правильный ответ.
- Задачи на CREATE TABLE отклоняли верное решение, если ученик давал имя ограничению (например,
CONSTRAINT ... PRIMARY KEY). Проверка идёт по структуре таблицы — имя ограничения больше не учитывается. - При ошибке в задаче на создание таблицы показывалась нерелевантная подсказка про
ORDER BY. Теперь подсказка по делу — про столбцы, типы, NOT NULL и ключи.
Задачи на изменение данных решаются ровно как написано в условии — без необъявленного проверочного SELECT.
- Задачи на INSERT/UPDATE/DELETE и транзакции (включая UPSERT, MERGE, SKIP LOCKED) больше не требовали дописать проверочный SELECT, о котором в условии не было ни слова. Теперь они проверяются по итоговому состоянию таблиц, а на странице видна плашка «SELECT в конце не нужен».
- Топ решений: решения служебных аккаунтов больше не попадают в список — как и в публичном рейтинге.
Задачи на создание таблиц и индексов теперь решаются ровно как написано в условии — без необъявленного SELECT; восстановлено живое обновление рейтинга.
- DDL-задачи (CREATE TABLE, ALTER, CREATE INDEX, внешние ключи) больше не требовали дописать проверочный SELECT, о котором в условии не было ни слова. Теперь они проверяются по итоговой схеме базы, а на странице видна плашка «SELECT в конце не нужен».
- Страница рейтинга: восстановлено живое обновление — WebSocket-соединение для лидерборда больше не обрывается.
- Схема данных: на части задач не отображались связи между таблицами — теперь стрелки внешних ключей видны на диаграмме.
- Окно «Верно!»: понижение ранга больше не показывается как повышение со стрелкой вверх — плашка ранга появляется только при реальном повышении.
Задачи на CREATE / ALTER TABLE и другие многошаговые решения снова можно отправлять — лимит на число запросов в одном решении был слишком жёстким.
- Лимит на количество SQL-запросов в одной отправке поднят с 3 до 20: DDL-задачи (CREATE TABLE, ALTER, индексы, триггеры) и многошаговые DML больше не отклонялись с ошибкой «слишком много запросов».
MySQL-вариант задач по всему каталогу синхронизирован с PostgreSQL — раньше часть задач в MySQL проверялась на устаревших данных.
- MySQL-вариант сотен задач грейдился на устаревшем наборе данных — сиды пересобраны, ответ в MySQL снова совпадает с PostgreSQL.
- Шесть задач, доступных только в PostgreSQL, получили рабочий MySQL-вариант.
- Задачи на CREATE TABLE / CREATE INDEX / ALTER проверяются по итоговой схеме таблиц — неверная структура больше не засчитывается как верная.
- INSERT-задачи с CURRENT_TIMESTAMP / NOW() больше не отклоняют верный ответ из-за разницы во времени запуска.
- Примеры вывода, случайно показывавшие точный ответ, заменены на неспойлерные; порядок строк проверяется там, где задача его требует.
- Сквозной аудит каталога: в нескольких десятках задач выровнены описание, проверочные данные и эталонное решение, которые разошлись между собой.
Починили проверку решений в задачах с несколькими запросами — DELETE/UPDATE с финальным SELECT теперь оцениваются правильно.
- Дата и время в результатах запросов показываются в чистом виде
2024-01-15 08:00:00вместо технического ISO-формата.
- Задачи с DML (DELETE, UPDATE, INSERT) и проверочным SELECT больше не отклоняли верный ответ как «лишние колонки».
- Задача #768: описание приведено в соответствие с проверяемым ответом.
- Подсказка при неверном решении больше не предлагает сверяться с блоком-примером — он намеренно неточный.
- Задачи на чистый UPDATE / DELETE / INSERT теперь проверяются по итоговому состоянию таблиц — неверная мутация больше не засчитывается как верная.
Поправили описания пяти задач, где текст не совпадал со схемой и ответом.
- Задачи #762, #763, #764, #765, #809: описание переписано под реальную схему и ожидаемый ответ.
- AI-генерация задач, AI Mentor и форма «Сообщить о баге»: при rate-limit показывают «попробуй через N секунд», а не «ThrottlerException».
Поправили задачу #17 — грейдер выдавал NULL из-за бага в схеме.
- Задача #17 (
average-post-hiatus): схема выровнена с сидом, грейдер снова считает корректно.
В задаче «Перенеси старьё в архив одной командой, без гонок» (#789) описание просило колонку customer_id, которой в схеме нет. Текст условия выровнен с реальной схемой и грейдером: id, status, amount.
- Задача #789 (
hard-cte-atomic-archive): описание упоминало несуществующую колонкуcustomer_id. Теперь условие совпадает со схемойorders/orders_archiveи с ожидаемыми колонкамиid, status, amount.
Сообщение «слишком много запросов» теперь показывает точный лимит и сколько секунд ждать до сброса — вместо обезличенного «ThrottlerException». Плюс серверный rate-limit поднят, чтобы быстрая навигация между задачами трека не упиралась в потолок.
- Серверный rate-limit на обычные API-запросы поднят в 5 раз — быстрая навигация между задачами трека (10+ параллельных запросов на mount) больше не упирается в потолок и не валится в 429.
- При rate-limit на отправке решения или Run теперь видно лимит (например, «лимит 30/мин») и точное «попробуй через 17 секунд». Раньше выводилось только «ThrottlerException: Too Many Requests» без подсказки сколько ждать.
Кнопка «Начать» на карточке трека снова стартует трек, а не открывает страницу трека — невидимый оверлей перехватывал клик.
- На
/trainer/tracksкнопка «Начать» в карточке трека больше не уводит на страницу трека вместо запуска. Полнокартный клик на детали трека сохранён.
SQL-песочница: пишите свои таблицы и запросы без задачи. Плюс единый широкий дизайн «бенто» для всех ключевых страниц — рейтинг, прогресс, треки, задачи, сессии.
- Новая страница
/sandbox— Monaco-редактор, схема, результат, табы по таблицам со срезом данных, шаблоны для разогрева. Анонимная сессия живёт 30 минут, у залогиненного пользователя — 7 дней. - Сохранение песочниц: до 5 на бесплатном тарифе, безлимит на Premium. Библиотека с поиском, копированием ссылки, удалением и переключением приватности.
- Единая широкая раскладка для «своих» страниц: «Мои песочницы», «Прогресс», «Рейтинг», «Сессии», «Задачи», «Треки» и страница конкретного трека — все на одной ширине с цветным hero и согласованной сеткой карточек.
Стрелки изменения позиции в таблице рейтинга вернулись — раньше колонка была пустой, потому что не было базовой точки сравнения.
- В таблице рейтинга снова показываются стрелки «поднялся / опустился / без изменений» рядом с позицией. Базовый снимок прошлой недели был засеян, дальше еженедельный крон будет обновлять его сам.
Починили баг: повторная отправка уже решённой задачи списывала Силу — бонус «решено с первой попытки» терялся. Всем пострадавшим Сила пересчитана.
- Повторная отправка решения по уже решённой задаче больше не сбрасывает бонус «решено с первой попытки» — Сила за задачу остаётся такой же, как после первого успешного сабмита.
- Задача №107 (разбивка трат по жанрам за 2005 год) больше не требует явной сортировки результата — теперь принимается любой порядок строк, как и должно быть по условию.
Починили схему БД у нескольких задач — раньше между связанными таблицами не рисовались оранжевые линии связей.
- В панели «Схема БД» у части задач не отображались связи между таблицами (оранжевые стрелки 1:N) — добавили недостающие связи в датасеты.
Поправили задачу «Раздели клиентов на низких, средних и высоких»: пример ответа и эталонное решение разъехались с условием — теперь везде идентификатор клиента и сегменты low / mid / high.
- Задача «Раздели клиентов на низких, средних и высоких» (#757): пример ответа и эталонное решение приведены в соответствие с условием — колонки
customer_id,segment, сегментыlow/mid/high, сортировка поcustomer_id.
Большое обновление под бренд «Арена»: новая главная, переписанный рейтинг с подиумом и live-обновлением, очки переименованы в «Силу», новая иконка-логотип (боевой топор), обучающие треки собраны заново, и адаптивная AI-генерация задач, которая реально смотрит на ваши последние решения.
- Новая вкладка «Лига» — 30 ближайших к вам по силе. Фильтры по сложности на глобальной вкладке (сила пересчитывается отдельно под каждую ладдер). Стрелки «вверх / вниз» у каждой позиции — сдвиг за неделю.
- Достижения: эмодзи заменены на векторные иконки в цвет категории, в браузере подтягиваются локализованные названия; на
/stats— сетка с тап-поп-апами на мобиле. Новая ачивка «10 экспертных». - Наведи на имя в рейтинге — откроется мини-карточка пользователя. Кнопка «Поделиться» рангом: ссылка ведёт на ваш публичный профиль с OG-превью.
- Главная страница переписана под бренд «Арена»: мощный заголовок «Точите SQL. Берите оффер.», live-скорборд в hero, шкала рангов с пином «Вы», секции про тренажёр / треки / AI / режим собеса / прогресс, финальный блок «Топор уже в руке. Бейте.». Адаптировано под телефоны.
- Очки переименованы в «Силу» (RU) / «Power» (EN). Иконка молнии заменена на боевой топор — он теперь и в логотипе, и в фавиконе, и в превью при отправке ссылки.
- Страница рейтинга переписана с нуля: подиум для топ-3 (золото / серебро / бронза), личная карточка прогресса с прогресс-баром до следующего ранга, единый липкий фильтр-бар, шкала рангов сразу под шапкой, закреплённая строка «вы» если вне топ-50, и обновление в реальном времени — таблица плавно реагирует на чужие решения без перезагрузки.
- Обучающие треки собраны заново. Аналитик / Бэкенд / QA / Data Engineering — это ~50 отобранных задач на трек: по нескольку представителей на связку «тема × сложность», от разогрева до EXPERT, с уклоном в задачи с реальных собесов. Добавлен трек Data Engineering, плюс отдельный трек подготовки к собесу.
- Кнопка «Сгенерировать под меня» теперь действительно адаптивная: смотрит последние 40 сабмитов, берёт тему с худшей текущей точностью и подбирает сложность под ваш уровень — засыпаешься, следующая будет проще; качаешь подряд — растёт.
- Тема по умолчанию для новых посетителей — «Ночь» (раньше открывалась «Вечер»). Если вы уже выбирал тему — ваш выбор сохраняется.
- Задача «Скажи одной цифрой: сколько у нас активных клиентов» — эталонное решение требовало клиентов с ≥2 оплаченными заказами, хотя условие говорит «хоть раз». Решение приведено в соответствие с условием.
EXPERT-задачи теперь дают честные 75 power за решение (а с бонусами — до 281), а не 10 как EASY. Лайфтайм-power у тех, кто уже их решал, пересчитан задним числом.
- В таблице наград не было строки для EXPERT — грейдер откатывался к дефолту 10 и любая EXPERT-задача давала столько же, сколько EASY. Теперь база EXPERT — 75 power, поверх неё работают те же множители (первая попытка ×2, прохождение в Mock ×1.25, решение с премиумом ×1.5), максимум за одну EXPERT-задачу — 281 power. Миграция перепрогнала
xp_totalпо всем профилям по тем же правилам, что и при сабмите, так что уже сделанные EXPERT-решения дольют разницу автоматически.
Закрыли лазейку, через которую решение можно было «угадать» из примера ответа: грейдер на 25 датасетах теперь проверяет ваш запрос на скрытых данных, отличных от тех, что видны в условии.
- Решение проверяется на тех же таблицах и колонках, что и раньше, но строки внутри отличаются от примера ответа. Любое корректное запросно-ориентированное решение по-прежнему проходит, а захардкоженное
SELECT … UNION ALL …с литералами из примера теперь падает с «wrong». Затронуто 25 датасетов из последнего наполнения каталога (lists, CTE, окна, пивоты, DML, экспертные).
Поправили две задачи по репортам учеников: разъехавшийся пример ответа в «Студенты по регионам» и описание, не сходящееся со схемой, в задаче на чистую выручку.
- Задача «Студенты по регионам» (#357): пример ответа теперь идёт по возрастанию
rn(Jack/Kim/Lars в первой строке), а в эталонном решении явныйORDER BY rnгарантирует тот же порядок. - Задача «Найдите пользователей с чистой выручкой не меньше 100» (#783): название и описание выровнены под фактические данные — это пользователи и события
purchase/refund, а не товары иsale/refund, и порог 100, а не 1000.
Шесть продвинутых задач переведены на готовую таблицу — теперь решение пишется без CREATE TABLE-преамбулы.
- Шесть задач уровня «Сложный» и «Эксперт» (UPSERT по одиночному и составному ключу, CTE с
RETURNING, bulk-INSERT … RETURNING, очередь сSKIP LOCKED, разворачивание массива черезUNNEST) перешли на стиль остальных продвинутых задач: таблица создана и при необходимости заполнена в датасете, в решении остаётся только сама проверяемая операция и финальныйSELECTдля сверки.
- Описание задачи «Счётчик просмотров» больше не расходится с примером ответа: текст и проверка теперь говорят про одну и ту же таблицу
counters(id, count)и пять прогонов одной строки.
У DDL-задач боковая панель схемы больше не показывает посторонние таблицы.
- На 10 задачах с
CREATE TABLE(от лёгких до уровня «Эксперт») схема в боковой панели рендерилась с таблицами из чужого датасета — например, у задачи про статьи показывалсяorders. Теперь панель пустая, как и должно быть, когда задача просит построить свою таблицу с нуля.
115 новых задач, тройной переключатель темы День/Вечер/Ночь и более мягкая тёмная палитра.
- Каталог расширен на 115 задач: 20 лёгких, 35 средних, 45 сложных и 15 уровня «Эксперт» — подзапросы, CTE, оконные функции, DML/DDL, MERGE, оптимизация запросов, транзакции, JSONB, рекурсия и
LATERAL. - Новый уровень сложности «Эксперт» с фиолетовой меткой и собственным фильтром в каталоге.
- Тройной переключатель темы: День (светлая), Вечер (мягкая тёмная) и Ночь (глубокая) — выбирай по освещению, чтобы глаза не уставали.
- Тёмная тема смягчена: фон стал серо-сине-чёрным (
#1B1B1FLinear-style) вместо контрастного near-black, основной текст переведён на zinc-300 — меньше halation на длинных сессиях. - В режиме «Ночь» окно SQL-редактора сидит на 3 ступени темнее канваса с лёгким уходом в чёрный — читается как утопленная панель в той же палитре.
- Справочник по теме в задаче теперь учитывает уровень сложности: на уровнях «Сложный» и «Эксперт» базовые
SELECT/WHERE/ORDER BY/LIMITскрыты, и поверх вытаскиваются продвинутые приёмы —STRING_AGG,ARRAY_AGG,GROUPING SETS,LATERAL, JSONB, partial-индексы и т.д. - Активные пилюли фильтра по сложности перешли на брендовый акцент с soft-fill вместо чёрного — больше не выбиваются из стиля светлой темы.
- Метки сложности в русской версии: «Лёгкое» → «Лёгкий», «Среднее» → «Средний», «Сложное» → «Сложный».
24 новые статьи в блоге для начинающих.
- Покрытие тем расширено: DML (
INSERT/UPDATE/DELETE), DDL (CREATE TABLE/ALTER TABLE), агрегации,DISTINCT, NULL-обработка (CASE WHEN/COALESCE/NULLIF), CTE и подзапросы, оконные функции, строковые и датовые.
- Справочник в тренажёре: каждый пункт теперь ведёт на собственную статью. Раньше четыре пункта по оконным функциям ссылались на общий обзор, теперь у
ROW_NUMBER,RANK/DENSE_RANK,PARTITION BYиLAG/LEADсвои материалы.
- В задаче №114 «Сколько кардиологических палат» переименовали ожидаемую колонку
countвwards_count— учеников путало совпадение с зарезервированным словом.
Закрыли лазейку с подгонкой ответов под пример: задачи теперь проверяются на скрытом наборе данных.
- Грейдер теперь умеет проверять задачу на отдельном скрытом наборе данных. Эталонный запрос считается на нём же, поэтому корректные решения продолжают засчитываться, а трюки с константами из примера — нет.
- Решение задачи «Старейший член клуба» с жёстко зашитым
LIMITпод пример больше не засчитывается — корректным остаётся запрос, выражающий «все строки с минимальной датой рождения».
Полировка карточек тарифов и кнопок «Войти и оформить» сразу после релиза v2.2.0.
- Цена и кнопка в карточках Free и Premium выровнены по одной линии.
- Сократили подписи под ценой для крипты и Visa/MC — оставили только название платёжной системы.
- Кнопка «Войти и оформить» снова кликабельна для незалогиненных пользователей.
Добавили оплату криптой и международными картами Visa/Mastercard, плюс закрутили антибот-защиту на входе.
- Оплата криптой через NowPayments — BTC, ETH, USDT и другие. $21 за 3 мес / $28 за 6 мес.
- Оплата международной картой Visa/Mastercard через Paddle с авто-учётом VAT/sales tax. $21 / $28.
- Селектор способа оплаты в карточке Premium: Карта РФ, Крипта, Visa/MC. Валюта меняется по выбранному методу.
- Cloudflare Turnstile на входе и регистрации — невидимая для людей, отрезает ботов.
- Аккаунт блокируется на 15 минут после 5 неверных паролей (далее экспонентой до 24 ч) с явным таймером.
- Ошибки логина и регистрации стали человеческими — больше никаких «Forbidden» и «Invalid credentials».
- Лимит решений: 5/мин и 30/15мин на пользователя. Реальные сессии не задевает.
- После входа возвращаемся на страницу, с которой жали «Войти» — включая OAuth (Google, GitHub, Yandex).
- «Выйти» с публичной страницы больше не выкидывает на главную.
Доделали починку сохранения Telegram, GitHub и LinkedIn в профиле. В прошлом релизе мы починили нормализацию ника на бэкенде, но фронт-компонент короткозамыкал onBlur и PATCH вообще не уходил — поле визуально принимало текст, на сервере ничего не оставалось, после reload поле было пустым. Теперь сравнение идёт по значению на момент focus, а не по состоянию ввода.
- Поля «Telegram», «GitHub», «LinkedIn» в профиле снова сохраняют введённое значение. Из-за useEffect, который пересчитывал «последнее сохранённое значение» на каждый ввод символа, проверка onBlur всегда сравнивала текущий текст сам с собой и пропускала PATCH-запрос. Сравниваем теперь снепшот, снятый при фокусе.
Поправили сохранение Telegram, GitHub и LinkedIn в профиле: если вводили адрес в формате t.me/username (как в плейсхолдере) — сохранялся обрезанный мусор вроде t.me. Теперь любой формат — голый ник, @ник, t.me/ник, https://t.me/ник — приводится к чистому никнейму.
- Поля «Telegram», «GitHub», «LinkedIn» в профиле корректно сохраняют ник, если вводить адрес без
https://. Раньшеt.me/durovпревращался вt.me,github.com/octocat— вgithub.com, потому что нормализатор требовал схемуhttp(s)://и без неё резал значение по первому слэшу.
Убрали ложный premium-баннер в окне результата решения: показывался даже на бесплатных задачах, и даже премиум-пользователям. Это был мёртвый код — премиум-задачи и так заблокированы на входе, до редактора их вообще не открыть.
- В модалке «Верно!» добавили горизонтальные паддинги к плашке «+50% Power per solve — go Premium» — корона и стрелка больше не липнут к границам.
- AI-ментор теперь получает компактный контекст задачи: активный SQL-диалект, таблицы, связи, ожидаемые колонки, пример ответа и diff последней проверки. Эталонный SQL используется только как приватный контекст для объяснений ошибок и поздних уровней подсказок.
- Окно «Задачи с собеседований — Premium» больше не выскакивает в фидбэк-баннере. Раньше любой server-error со словом
premiumв стек-трейсе (например, временно отсутствующая колонкаsolved_as_premiumпосле миграции) ловил подстрочный матч и рендерил upsell — даже на свободной задаче и даже премиум-пользователю.
Premium теперь даёт +50% Power за каждую решённую задачу — буст «прилипает» к задаче навсегда, даже после окончания подписки. AI-ментор перестал сваливать решение с первой же подсказки и эскалирует помощь по нарастающей. Плюс убрали стартовый комментарий -- Нажмите ▶ Запустить в редакторе первой задачи.
- Premium-подписка даёт ×1.5 Power за каждую решённую задачу. Бонус закрепляется за задачей в момент решения, поэтому остаётся в общем счёте даже если подписка позже истечёт.
- В окне «Верно!» под счётчиком +Power для бесплатных юзеров появляется приглашение «+50% Power за решение — оформи Premium» с переходом на /pricing.
- AI-ментор стал эскалировать подсказки. На первый запрос по задаче — общее направление без названий операторов; на 2-4-й — концепт и категория операции; на 5+ можно называть
LIKE/WHERE/GROUP BYнапрямую. Сброс — раз в сутки. - Объяснение неверного ответа («Объясни ошибку») теперь подчиняется тем же тирам, что и обычные подсказки — больше не выдаёт ключевые операторы при первой же ошибке.
- Закрыли хвосты аудита SQL-задач: исправили эталон в «Победителях турнира», выровняли TIMESTAMP-превью в нескольких задачах и восстановили PostgreSQL-вариант для одной AI-задачи.
- Убрали стартовый комментарий
-- Нажмите ▶ Запустить — посмотри, какие данные в таблицев редакторе первой задачи. Открытая задача теперь начинается с пустого редактора.
Перетряхнули фильтры в каталоге задач: статус стал 3-позиционным (Все / Нерешённые / Решённые) с дефолтом «Нерешённые», добавили фильтр по диалекту, чипы тем и компаний показывают сколько задач под ними сейчас, активные фильтры выведены отдельной строкой пилюль с «Сбросить всё».
- Фильтр по диалекту в каталоге: All / PG / MySQL — отдельный сегмент рядом со статусом.
- Чипы тем и компаний теперь показывают количество подходящих задач: «Окна (43)», «Тинькофф (5)». Чипы с нулём задач блёкнут.
- Строка активных фильтров: каждый текущий фильтр (поиск, сложность, статус, диалект, избранные, тема, тег, компания, регион) выводится как пилюля с ×; кнопка «Сбросить всё» возвращает к дефолтам.
- Фильтр статуса задачи стал сегментированным переключателем «Все / Нерешённые / Решённые» с дефолтом «Нерешённые». Раньше был один тогл «Скрыть решённые».
- Сортировка переехала наверх — раньше пряталась внизу под скроллом и почти не использовалась.
- Кнопка «Избранные» переехала на верхний уровень фильтров — теперь рядом с другими бинарными тогами.
- Бейдж «Фильтры N» больше не показывает «1» при первом заходе — дефолт «Нерешённые» не считается активным фильтром.
Прошлись по всему каталогу: грейдер больше не отклоняет корректные ответы из-за разной сериализации DATE и TIMESTAMP, у 60+ задач выровняли превью с реальным выводом эталонного решения, у 5 задач прибили CURRENT_DATE / NOW() к фиксированной дате — превью больше не плывёт день за днём. Плюс уточнения в задаче про помесячные транзакции по жалобе пользователя.
- Грейдер: добавили нормализацию даты-как-timestamp
2024-01-01T00:00:00.000Z↔2024-01-01— корректные ответы перестанут получать «Количество совпадает, но строки другие» из-за разного типа возврата. - Задача «Помесячные транзакции и возвраты»: в описании уточнили, что чарджбэк относится к месяцу исходной транзакции, а не к дате самого возврата; превью теперь показывает первый день месяца, а не TZ-сдвинутые ISO-даты.
- Перегенерировали sample-превью у 60+ задач: numeric-формат (
100→100.00), TZ-сдвиг (+03→+00), DATE-as-TIMESTAMP, INTERVAL-как-объект — превью теперь совпадает с тем, что возвращает реальный раннер. - Пять задач, использующих
CURRENT_DATE/NOW()/CURRENT_TIMESTAMPв seed (#170 sa-90, #601 qa-delete-stale-audit, #602 qa-signup-without-verification, #668 ru-mts-client-spend-30d, #693 ru-alfa-third-business-day): прибили к точке2026-05-05 12:00:00 UTC. Превью больше не уплывает.
Перекроили блог: поиск, навигация по 10 разделам, первые 7 статей-туториалов для начинающих. Названия команд в справочнике задачи стали кликабельными ссылками на статьи. На странице релизов — дерево версий с подсветкой при скролле.
- Блог: поиск по заголовкам/тексту/тегам и левый сайдбар с разделами. Активный раздел подсвечивается при скролле.
- Блог: 7 первых статей-туториалов —
SELECT … FROM,WHERE,ORDER BY,LIMIT,INNER JOIN,LEFT JOIN, алиасы. - Справочник по теме в задаче: названия команд стали синими ссылками на соответствующие статьи блога — открываются в новой вкладке.
- Релизы: дерево версий слева с группировкой по
major.minor, клик скроллит к версии и обновляет хеш-якорь. - Кнопка «копировать SQL» в каждой записи на вкладке «Отправки».
- Падежи числительных на всех страницах: «221 задача», «2 задачи», «5 задач» вместо прежнего «221 задач».
- Справочник по теме в задаче больше не дёргается при разворачивании — место под скроллбар теперь зарезервировано.
- Markdown-таблицы в статьях блога теперь рендерятся как HTML-таблицы, а не одной сплошной строкой.
Вычитали весь каталог: починили 23 нерешаемых задачи, переписали английские описания у 66 задач, выровняли описания и sample-превью ещё у нескольких десятков. Плюс фикс по жалобе пользователя.
- Sample-превью у 50+ задач теперь совпадает с тем, что возвращает эталонное решение.
- Схлопнули дубликаты тегов компаний в фильтрах задач.
- Починили 23 задачи (pharma-*, loyal-*, hotel-*, qa-*), которые не решались из-за несоответствия схемы и данных.
- Переписали английские описания у 66 задач lc-* / lc2-*, где раньше была заглушка или обрывок текста.
- Задача «Кабинеты, занятые 2 сентября 2019» перестала засчитывать неправильный ответ.
- У 10 задач описание расходилось с эталонным решением — привели к одному.
- У 7 задач Точки висели чужие условия — переписали под реальные задачи.
69 новых задач с реальных собеседований в российских компаниях (Яндекс, Тинькофф, Сбер, ВТБ, Альфа, ВК, Озон, Авито, Магнит, Самокат и ещё 23 компании) — с разнообразными типами данных PostgreSQL: UUID, JSONB, ENUM, INTERVAL, TSTZRANGE, INET, NUMERIC и POINT. Плюс важные фиксы по жалобам пользователей и красная точка-индикатор «Что нового» в боковом меню.
- 69 новых задач с реальных собеседований в РФ-компаниях. 33 работодателя: Яндекс, Тинькофф / T-Bank, Сбер / СберМаркет, ВТБ, Альфа-Банк, Газпромбанк, Росбанк, Совкомбанк, МТС / МТС Банк, Открытие, Renaissance Bank, Мегафон, ВК, Озон, Авито, Магнит, Лента, Wildberries, Cian, ivi, Delimobil, Aviasales, Самокат, Domclick, Lesta, Skypro, Учи.ру, Sravni.ru, Vizor, CloudReports и Yandex Practicum. Все задачи помечены как Interview и доступны в Premium.
- Богатые типы данных в схемах задач. Раньше у большинства задач столбцы были
INTиVARCHAR(100)— типично для учебных датасетов и далеко от продакшна. Теперь в новых задачах встречаютсяUUIDдля PK клиентов и заказов,NUMERIC(15,2)для денег иNUMERIC(12,4)для курсов валют,TIMESTAMPTZдля событий,INTERVALдля длительностей звонков и сессий,TSTZRANGE/DATERANGE/NUMRANGEдля SCD2-историй и валидных диапазонов цен,JSONBдля метаданных и payload-ов событий,ENUMсо своимиCREATE TYPEдля статусов и категорий,INETдля IP в антифрод-задачах,POINTдля GPS-координат,TEXT[]/INTEGER[]для тегов и списков. Так ученик встречается на тренажёре с теми же типами, что увидит в реальной БД. - Красная точка-индикатор у пункта «Что нового» в боковом меню — появляется, когда вышел новый релиз, который вы ещё не открывал. Точка пропадает после одного захода в
/releases(флаг хранится в localStorage этого браузера). Раньше индикация была только в верхней шапке; в режимах с боковым меню её было не видно.
- Корректное отображение новых типов в таблице результата запроса. Раньше столбцы
JSONB,INTERVALиPOINTрендерились как «[object Object]», а массивы (TEXT[],INTEGER[]) сжимались до строки через запятую — не было видно структуру. Теперь JSONB и массивы показываются как читаемый JSON, INTERVAL — в формате1d 02:30:00, POINT — как(x, y). Логические значения и UUID отрисовываются текстом, как и раньше. - ER-диаграмма на странице задачи получила цвета для новых типов: UUID — фиолетовый, JSONB — жёлтый, INTERVAL — фиолетовый (как другие даты-времена), TSTZRANGE / DATERANGE / NUMRANGE — розовый, INET — голубой, POINT — розовый, кастомные ENUM — алый. Раньше эти типы попадали в дефолтный серый и не выделялись среди стандартных INT / VARCHAR.
- Шесть исправленных задач (см. выше) заодно получили обогащённые схемы в стиле новых интервью-задач: добавили
UUIDPK,JSONBpayload,ENUMдля пола / категорий / статусов,NUMERIC(15,2)вместоINTдля зарплат и цен,INTERVALдля длительностей. Тексты заданий слегка переписаны под новые типы, но смысл задачи остался тем же. Это первый шаг по апгрейду старых задач — продолжим в следующих релизах.
- Поправили несколько старых задач по жалобам пользователей. «Участники проекта, часть 2» — ER-диаграмма показывала Employee + Department вместо Project + Employee, при том что в реальной схеме всё было верно; подтянули диаграмму к схеме. «Публикации с жалобами» — описание не объясняло, что причина жалобы лежит в столбце
extra: теперь это явно сказано. «Исследование продаж, часть 1» — решение использовалоSUM(price)при наличии столбцаquantity, что путало; переделали подSUM(quantity * price), более типичное для реальной выручки. «Поменять пол всем сотрудникам» — к задаче была привязана не та схема (Employee + Department вместоSalary(id, name, sex, salary)), что делало её нерешаемой; перепривязали к каноническому датасету. Дополнительно поправили те же скрытые рассинхроны в «Участники проекта, часть 3» и «Публикации с жалобами, часть 2».
Большой релиз: новая навигация с боковым меню, режим «Собеседование» с +25% Power-бонусом, публичные профили и друзья, e-mail-уведомления, цветные теги компаний, расширенные фильтры и блок с партнёрскими курсами. Плюс важный privacy-фикс между аккаунтами и десятки UX-улучшений.
- Блок с курсами от партнёров. На странице задач (на широких экранах) появилась правая колонка с подборкой подходящих курсов, на мобильном — горизонтальная карусель над списком задач. Карточки ведут на лендинги партнёров с UTM-метками — для нас это способ покрыть инфраструктуру без поднятия цены подписки.
- Новый режим «Собеседование» — строгая симуляция реального интервью. Одно нарушение (переключение вкладки, paste, выход из fullscreen, потеря фокуса > 1 сек) — мгновенный fail. Подсказки, AI Mentor и справочник скрыты и заблокированы. Длительности: 5 / 10 / 15 / 30 / 60 минут. Free-тариф — 1 попытка в день, Premium — без лимита. Во время активной сессии вся внешняя навигация (боковое меню, кнопки «Задачи», «Топ решений», «Следующая задача», «Выйти из трека», Prev/Next/Random) блокируется — выйти можно только через кнопку «Завершить» или закрытие вкладки (тогда сессия автоматически уходит в Abandoned).
- +25% Power за каждое решение задачи в режиме «Собеседование» — бонус привязан к задаче и виден на странице отчёта после сессии. В таблице рейтинга появилась информационная колонка «Mock» (та же цифра показана в карточке профиля и на
/u/<username>); на сортировку по Power она не влияет. - Публичные профили
/u/<username>: задаёшь короткое имя пользователя в профиле, включаешь публичный режим — анонимный посетитель видит ранг, Power, текущий стрик, ачивки, тепловую карту активности и ссылки на GitHub / Telegram / LinkedIn. Без логина — без приватных данных. - Друзья: добавление по публичному имени, входящие/исходящие приглашения, отдельная вкладка «Рейтинг друзей» с их Power, стриком и решёнными задачами.
- Избранное: на любой карточке задачи появилась звёздочка. Клик — задача попадает в фильтр «Только избранное». Список синхронизируется с аккаунтом и не теряется при смене браузера.
- E-mail-уведомления (галочки в профиле). «Сохраните стрик» — вечером, если у вас стрик ≥ 3 дней и сегодня ничего не решено. «Дайджест за неделю» — субботнее утро со сводкой решённых задач, текущим стриком и самой слабой категорией.
- Premium-пользователи визуально выделены везде, где видны аватары: голографическое радужное кольцо вокруг аватара (рейтинг, друзья, профиль, sidebar, публичная страница
/u/<username>); на крупных аватарах — корона в углу. Не влияет на сортировку. - Цветные теги компаний на карточках задач: жёлтый — Яндекс / Тинькофф / Билайн, зелёный — Сбербанк / Spotify / OpenAI, синий — VK / Ozon / Google / Meta, красный — МТС / Альфа / Tesla, фиолетовый — Stripe / Skypro / Wayfair, оранжевый — Amazon / Alibaba и т.д. Раньше все теги были одного фиолетового.
- Дополнительные SQL-чипы в фильтре «Тема» на странице задач: к 8 категориям (SELECT, JOIN, подзапросы, оконные, агрегатные, CTE, DML, DDL) добавлены
GROUP BY,COUNT,HAVING. Можно мешать с категориями для более точной выборки. - Панель «Схема БД» на странице задачи теперь сворачивается. Кнопка справа от названия задачи — клик и колонка прячется, освобождая ширину для редактора и результата. Состояние запоминается в этом браузере, так что в следующих задачах схема откроется в том же режиме.
- 8 новых интервью-задач от компании «Точка» — от EASY до HARD. CRM-сценарии (поиск клиентов с активной заявкой), портфельные расчёты (структура, средневзвешенный срок до погашения, динамика стоимости), запросы по облигациям с оконными функциями. Решения для PostgreSQL и MySQL.
- Раздел «Блог» (
/blog). Длинные статьи и туториалы — стартуем с разбором оконных функций. Двуязычный контент, ЧПУ-ссылки, OG-карточки для соцсетей. Доступен из футера и подвала бокового меню. - Кастомная страница 404. Раньше Next.js рисовал чёрный текст на белом фоне — в тёмной теме просто не читалось. Теперь страница использует токены темы и оборачивается в общий шелл, так что навигация остаётся под рукой.
- Полный редизайн навигации. Для залогиненных пользователей внутри приложения главное меню переехало в боковую панель слева — там сгруппированы Тренажёр, Прогресс, Рейтинг и другие разделы, под аватаром виден Power и стрик, переключатели языка и темы — внизу. На лендинге, странице тарифов и в страницах входа осталась прежняя slim-шапка сверху. Контент-страницы (Что нового / Сообщить о баге / Блог) подхватывают тип меню исходя из того, откуда вы на них пришёл.
- Премиум-обводка вокруг аватара теперь показывается на всех вкладках рейтинга — раньше радужное кольцо появлялось только на «За всё время», а на вкладках «За месяц» и «За неделю» исчезало. Бекенд для периодических рейтингов не отдавал статус подписки.
- Имя и аватар, изменённые в профиле, теперь сразу подтягиваются в боковом меню — без перезагрузки страницы. Раньше старая карточка пользователя могла висеть до полного рефреша.
- Утечки данных между аккаунтами при смене пользователя в одном браузере. Раньше после logout / login с другим аккаунтом могли сохраняться: история чата с AI Mentor, черновики SQL в редакторе, флаги «решено» по задачам, активные mock-сессии, счётчик AI-генерации, кеш избранного. Теперь при выходе и при любом входе (форма, OAuth, подтверждение e-mail) данные предыдущего пользователя очищаются.
- Ссылка «Рейтинг друзей» из профиля теперь открывает вкладку «Друзья» в рейтинге. Раньше попадала на глобальный топ, и приходилось переключать вкладку руками. Блок «Начни здесь — задачи на вечер» больше не возвращается после dismiss — раньше сбрасывался при каждом logout/login.
- Десятки правок мобильной вёрстки и взаимодействия: компактнее окно отчёта после mock-сессии, корректные отступы фильтров на узких экранах, фидбэк-баннер не наезжает на меню на 1024px, поля «имя» и «email» на странице «Сообщить о баге» для незалогиненных пользователей.
Хотфикс по UX редактора на узких экранах: окно «Настройки редактора» больше не обрезается панелью кода и не уходит за край viewport на мобильных устройствах. Плюс на мобиле теперь есть та же кнопка-шестерёнка, что и на десктопе — и размер шрифта в редакторе наконец-то применяется к мобильному вводу.
- Окно «Настройки редактора» при открытии могло обрезаться правым/левым краем экрана и не имело внутренней прокрутки — на узком ноутбуке и тем более на телефоне половины настроек просто не было видно. Попап теперь рендерится поверх всей страницы (через portal), позиция автоматически прижимается к видимой области, а если содержимое не помещается по высоте — внутри добавляется скролл. Шапка с заголовком и крестиком закрытия остаётся на месте при скролле.
- На мобильном виде редактора (≤1024px) в тулбаре раньше не было кнопки настроек редактора — открыть «Размер шрифта» можно было только с десктопа. Теперь кнопка-шестерёнка стоит рядом с PG/MySQL и Format, и изменение размера шрифта применяется к мобильному текстовому полю.
Хотфикс по баг-репорту: на задаче №240 («Премии работников») схема показывала неправильные таблицы — было видно Employee + Department вместо реальных Employee + Bonus, поэтому условие казалось бессмысленным.
- Задача №240 «Премии работников»: schema viewer показывал устаревшие таблицы
Employee + Department(с полямиdepartment_id,manager_id), а вкладкаDepartmentбыла пустой. Песочница и эталонное решение работали корректно — баг был только в UI-метаданных. Теперь схема показывает реальные таблицыEmployee + Bonusсо связьюBonus.empId → Employee.empId.
Обогатили датасеты в 268 задачах из 339 — теперь в исходных таблицах больше строк, в ожидаемом результате больше строк, и задачи перестают казаться сломанными.
- Массовое обогащение датасетов: 268 задач (из 339) получили более полные seed-данные — обычно 6-12 строк в основных таблицах вместо 2-4, с разнообразием по фильтрам/JOIN/GROUP BY референсного решения. Затронуты 137 уникальных датасетов. Reference-решения и схемы НЕ менялись. Прогресс пользователей сохранён: уже решённые задачи остаются решёнными, Power и ачивки не пересчитываются.
- Каждая обогащённая задача провалидирована: reference-решение запущено на новом датасете через executor, sample_output регенерирован из реального результата.
- Заодно правка задачи №38 (
well-paid-employees) — она была отдельным фиксом v1.2.4, теперь в общем массиве.
Хотфикс по баг-репорту: подпись над «Пример ожидаемого ответа» поясняет, что число строк там не должно совпадать с таблицами в схеме.
- Над панелью «Пример ожидаемого ответа» появилась подпись: «это пример правильного ответа — у него своё количество строк, оно не должно совпадать с таблицами в схеме». Раньше юзеры считали строки в одной из таблиц схемы и думали, что задача сломана, если их количество не совпадает с числом строк в примере.
Хотфикс по баг-репорту: задача №38 «Зарплата выше, чем у начальника» теперь работает на нормальном датасете с тремя реальными случаями. Плюс маленькая оранжевая точка на пункте «Что нового?» когда выходит свежий релиз.
- На пункте «Что нового?» в навбаре появляется маленькая оранжевая точка, когда выходит свежий релиз. Один заход в
/releases— и точка исчезает до следующего релиза.
- Задача №38 (
well-paid-employees): датасет был слишком тонким — всего 6 сотрудников и единственный кейс «подчинённый получает больше начальника». Это создавало ощущение, что данные перепутаны. Расширили до 9 сотрудников в двух отделах с тремя ясными случаями (Eve > Alice, Frank > Dave, Henry > Bob).
Страница «Сообщить о баге» с прикреплением скриншотов, вторичная группа пунктов в навбаре и компактнее лента «Начни здесь» на мобильном.
- Страница «Сообщить о баге» в навбаре: форма с темой, описанием и до 5 скриншотов/коротких видео (drag-and-drop поддерживается). Репорт улетает нам на почту, чтобы мы могли быстро посмотреть.
- В навбаре появился вторичный набор пунктов — «Что нового?» и «Сообщить о баге», отделены тонкой вертикальной линией от основной навигации.
- На мобильном лента «Начни здесь» компактнее — короткий заголовок, спрятано описание, уже карточки. Освобождает место для самих задач.
- Лента «Начни здесь» больше не мигает на долю секунды при заходе на страницу задач — теперь рендерится только после ответа
/progress. - В релиз-нотах highlight (одной строкой сверху) теперь корректно рендерит бэктики — раньше показывал литеральный «
?lang=» вместо стилизованного code-pill. - Убран фантомный вертикальный скролл на странице «Обучающие треки» —
min-h-screenв паре с навбаром давал лишние ~60px высоты даже когда контент влезал.
UX-полировка по всему тренажёру + URL-параметр ?lang= для рекламы и прямых ссылок на нужный язык.
- Можно открыть сайт сразу на нужном языке через
?lang=enили?lang=ruв URL:https://sql.coderang.dev/?lang=en. Удобно для рекламы и шаринга ссылок на конкретную локаль; язык запоминается на год.
- Когда AI-подсказки на день кончились, кнопка «Объясни» в баннере превращается в «Справочник» и открывает справочник по теме.
- Звезда «избранное» теперь видна на мобильном и слегка просвечивает на десктопе вместо полной невидимости без ховера.
- Описание задачи больше не «скачет» при разворачивании справочника. Star-кнопка ярче на ховере.
- На DDL-задачах вместо пустого ER-канваса — подсказка «нет начальных таблиц, нужно создать через CREATE TABLE».
- AI-кнопка теперь действительно пульсирует только при ошибке (раньше класс анимации не был определён в CSS).
- Power и Streak в navbar подгружаются из localStorage до серверного запроса — без скачка с «0 ⚡».
- Счётчик AI-генераций больше не сбрасывается на 0 после редиректа на сгенерированную задачу.
- Мобильные мелочи: difficulty-бейджи одинаковой ширины (Star ровно по колонке), нижний таб-бар не наезжает текстом на иконку, плавный тик дневного счётчика, tooltip на streak-иконке, корректные русские числительные («1 команда» / «2 команды» / «5 команд»).
- Названия русских компаний (Сбербанк, Яндекс, Авито…) на английском интерфейсе теперь рендерятся латиницей (Sberbank, Yandex, Avito). На русском — кириллицей как раньше.
- Названия записей в справочнике по теме («Алиасы», «Скалярный подзапрос» и т.п.) корректно переводятся при переключении языка.
- Лидерборд за неделю/месяц теперь учитывает first-try ×2 бонус и не дублирует Power от re-submission. Раньше «за месяц» отставал от «за всё время» примерно вдвое — это был баг в подсчёте, не в данных.
- Убран мёртвый таб «Solutions» из левой панели — он не открывался ни одной кнопкой, но грузил данные параллельно с «Top solutions».
- Бэктики в описаниях больше не оставляют пробел перед пунктуацией («
Action.»). - Empty-state в результатах («Здесь будет результат…») теперь корректно переводится на английский.
Полировка задач на изменение данных и общая шлифовка описаний.
- Подсказка для DDL/DML задач: на задачах с UPDATE/INSERT/DELETE и CREATE/ALTER/DROP появилась короткая плашка «SELECT в конце не нужен» — больше не нужно гадать, что выводить.
- Справочник по теме теперь учитывает тип задачи: на DML-задачах не показывает SELECT/ORDER BY/LIMIT (которые тут не используются), на DDL — только команды изменения схемы.
- Бэктики в описаниях задач (\
id = 4\, \users.email\) теперь рендерятся как акцентные code-pill вместо сырого текста — описания читаются ровно так, как авторы их пишут. - Code-блоки в справочнике получили акцентную полосу слева и тонкую границу — выглядят как настоящие сниппеты, а не серые заглушки.
Старт для новичков: лента «Начни здесь», стартовый SQL для первой задачи и справочник по теме внутри задачи. Подсказки при ошибках стали конкретными и не тратят AI-квоту.
- Лента «Начни здесь» в начале страницы задач — 8 простых SELECT-задач для тех, кто только начинает. Видна, пока ничего не решено; листается перетаскиванием с курсором-рукой.
- Стартовый SQL в редакторе. При первом открытии любой задачи в редакторе появляется готовый
SELECT * FROM <первая таблица> LIMIT 5;— нажмите ▶ и сразу увидишь данные, не нужно набирать с нуля. - Справочник по теме. Под описанием задачи появился складной блок с релевантными SQL-командами, синтаксисом и кратким объяснением — отдельный набор для SELECT, JOIN, агрегатов, подзапросов, оконных, CTE, DML, DDL.
- Подсказки в красном баннере при неправильном ответе стали конкретными: называются лишние/недостающие колонки, расхождения по строкам, проблемы сортировки и типичные SQL-ошибки. Работает локально, без расхода AI-запросов.
Алиас-aware автодополнение в SQL-редакторе и большие улучшения мобильной вёрстки.
- Страница релизов: история обновлений теперь видна на /releases.
- Алиас-aware автодополнение. Когда таблица алиасится в FROM, после
<алиас>.подсказываются только колонки этой таблицы. Сами алиасы автодополняются по Tab. - Точка
.стала trigger-character: подсказки открываются автоматически после неё, без Ctrl+Space.
- Меню на мобильных выезжает поверх контента вместо того чтобы толкать страницу вниз. Закрывается тапом снаружи.
- 300+ описаний задач переписаны: добавлен бизнес-контекст, перечислены выходные столбцы, явно указаны сортировка и округление.
- Описание задачи на мобильных теперь корректно скроллится при длинном тексте. Раньше упиралось и не давало добраться до табов внизу.
- Нижний таб-бар тренажёра всегда виден на любом мобильном браузере (Yandex Browser, MIUI, Samsung Internet). Раньше уезжал за границу viewport-а.
- Мобильное меню стало полностью непрозрачным. Раньше на 5% просвечивал контент сзади на браузерах без поддержки backdrop-filter.
- На узких экранах (320px и меньше) поле сортировки задач больше не уезжает за правый край.
- Старый баг автодополнения: при наборе
t.eпослеFROM employee tподставлялосьt.employee.salary(невалидный SQL). Теперь алиас уважается.
Первая стабильная версия SQL Arena.
- 259 курируемых SQL-задач по 6 категориям: SELECT, JOIN, агрегации, подзапросы, оконные функции, DML.
- 96 задач с реальных собеседований топ-компаний (Google, Meta, Amazon, Stripe и др.).
- Поддержка двух SQL-диалектов: PostgreSQL и MySQL с мгновенным переключением.
- AI-генерация уникальных задач, адаптированных под уровень пользователя.
- AI Mentor — контекстные подсказки без раскрытия ответа.
- 3 учебных трека: структурированные пути от основ до продвинутого SQL.
- Реалтайм-выполнение SQL в изолированной песочнице с проверкой результата (сравнение колонок, строк, порядка).
- OAuth-авторизация через GitHub, Google, Yandex и регистрация по email/паролю.
- Лидерборд по XP (Power), профили, достижения, тёмная и светлая тема.
- Premium-подписка с интеграцией ЮKassa и rate-limiting от ботов.
- Интерактивные ER-диаграммы схем, Monaco-редактор с подсветкой и форматированием SQL.
- Двуязычный интерфейс: русский и английский.