Какво ново
История на обновленията на SQL Arena. Най-новите издания най-отгоре.
Every task is now solved by writing SQL — new task formats and catalog filters, plus new task packs.
- New task types: debugging, data-quality checks, index design, query rewriting, schema design with constraints, transactions & locking, and access permissions (GRANT/REVOKE).
- New catalog filters: by task format, difficulty, solved status, dialect (PostgreSQL/MySQL) and favorites.
- Permissions tasks are graded by the resulting privilege set (least privilege enforced).
- Transaction tasks are graded under real concurrency: safe debits, atomic transfers, idempotency, isolation levels and row locks.
- New task packs: ride-hailing analytics, data modification, schema design, recursive hierarchies and product events.
- Your chosen SQL dialect (PostgreSQL/MySQL) now persists across tasks.
- Most tasks now show a preview of the expected output.
- Hundreds of new step-by-step hints, plus an AI mentor that explains the errors in your query.
- Every format is now code-writing: you write real SQL instead of picking an answer.
- Task descriptions are living business scenarios in Russian and English; difficulty levels recalibrated.
- AI task generation: descriptions now read as a real business scenario and no longer give away the solution — formulas, SQL function names and dry table listings are kept out of the text.
- Company examples on the home page and in Premium are now locale-aware: the Russian site shows Russian employers, every other locale shows international ones (Tesla, Uber, Microsoft, Spotify, Meta) whose tasks we carry.
- Removed a stray privacy notice banner on the user profile page.
Интерфейсът вече говори на всички езици на ЕС — 21 нови езика.
- Добавени са 21 езика на ЕС: немски, френски, италиански, нидерландски, полски, румънски, гръцки, чешки, унгарски, шведски, датски, фински, словашки, български, хърватски, литовски, словенски, латвийски, естонски, ирландски и малтийски. Изберете един в превключвателя на езиците или той се разпознава автоматично по вашата държава и език на браузъра.
- Страницата «Докладване на грешка» вече е «Обратна връзка» (на /feedback) с два раздела: «Докладване на грешка» и «Предложете подобрение». Предложенията за подобрение стигат до екипа така, както и докладите за грешки.
- В настройките на профила вече се вижда крайната дата на абонамента, а формулировката «еднократно плащане» е премахната.
- Падащото меню на превключвателя на езиците вече е по-компактно.
- Профилите отново се отварят от класацията за влезли потребители — поверителността скрива профил само от анонимни посетители. URL-името на профила вече не може да се изтрие, затова всеки профил остава достъпен чрез връзка.
- Плащането с чужда карта (раздел Visa/MC) на руския сайт вече се изчислява правилно в USD и се обработва през Paddle, вместо да отваря YooKassa със сума в рубли.
Сертификация: издържи изпит с таймер и получи проверим сертификат за ниво.
- Изпити за сертификация: три нива (Foundations / Practitioner / Expert), по 8 задачи всяко, таймер за всяка задача, проходен праг 7 от 8. Всеки опит получава собствен набор от данни, така че отговорите не могат да бъдат запаметени предварително.
- Проверим сертификат с QR код, който води към публичния ви профил; в профила вече се показва раздел със сертификати.
- Изтрийте акаунта си направо от настройките на профила.
- Настройките на профила бяха преработени в изчистен стил на разделен списък; Premium потребителите получават анимиран пръстен около аватара си.
- Проверката на решенията е подсилена при 324 задачи: вече се изпълнява върху скрит набор от данни, така че вече не можете да минете, нагласяйки решението към видимия пример.
- Автодовършването в редактора вече подсказва имена на CTE, обявени чрез WITH, когато пишете FROM/JOIN.
- AI Mentor вече вижда грешката ви и текущата заявка дори след Run — нов бутон „Explain my error“ ви позволява да обсъдите всяка грешка, включително синтактични грешки.
- Задача #91: проверката вече се изпълнява върху скрит набор от данни — вече не можете да минете, нагласяйки решението към видимия пример (например чрез LIMIT или фиксирана дължина).
- Задача #13: премахната е подсказката с готовия филтър от условието — сега сами извеждате решението.
- Картата на уменията вече покрива всички категории задачи (добавени са CTE, DDL, транзакции, оптимизация) и стана по-голяма и по-четлива.
- Подсказката „какво да подобрите“ в картата на уменията вече сочи към темата с най-много нерешени задачи, вместо към случайна.
- Годишната графика на активността отново показва пълните имена на месеците, вместо да ги съкращава до една буква.
- Решения, които връщат времеви интервал (например разликата между две времена), вече не дават грешка при изпращане.
- Задача #88: данните са поправени — полетите от Париж вече имат различна продължителност, вместо три еднакви реда.
- Undo (Ctrl+Z) в редактора вече пази отделна история за всеки раздел със заявка.
- Задача #624: условието вече посочва, че средната цена трябва да се закръгля до 2 знака след десетичната запетая.
- Предложенията на SQL редактора вече не се дублират след навигация между задачи.
- Задача #621: клубовете без членове вече се показват в резултата с нулев приход.
- Трудността на задача #831 е променена от EXPERT на MEDIUM.
SQL Arena вече е многоезична: английски, испански и португалски, всеки със собствени URL адреси на страниците и автоматично разпознаване на региона.
- Превключвател на езика: руски, английски, испански (Испания и Латинска Америка) и португалски.
- При първо посещение сайтът се отваря на езика на вашия регион, а изборът ви се запомня.
- Всеки език има собствени URL адреси на страниците (/en, /es, /es-419, /pt-br), които спокойно може да споделяте.
- Плащане на Premium в местната ви валута: RUB, USD, EUR или BRL в зависимост от региона.
- Английският сайт е напълно поддържан; преводите на испански и португалски се пускат постепенно.
Задачите за създаване на таблици приемат всяка валидна форма, подсказките при грешка вече са релевантни, а една задача с нееднозначен отговор беше поправена.
- Задачата „най-популярна двойка курсове“: примерните данни позволяваха няколко еднакво валидни отговора, докато проверката приемаше само един. Сега задачата има единствен верен отговор.
- Задачите CREATE TABLE отхвърляха вярно решение, когато учащият именуваше ограничение (например
CONSTRAINT ... PRIMARY KEY). Проверката вече сравнява структурата на таблицата — имената на ограниченията се игнорират. - Неуспешна задача за създаване на таблица показваше нерелевантна подсказка „add ORDER BY“. Подсказката вече е по същество — за колони, типове, NOT NULL и ключове.
Задачите за промяна на данни се решават точно както пише в условието — без недокументиран проверяващ SELECT.
- Задачите INSERT/UPDATE/DELETE и транзакциите (включително UPSERT, MERGE, SKIP LOCKED) вече не изискваха недокументиран проверяващ SELECT. Сега се оценяват по крайното състояние на таблицата, а на страницата на задачата се показва бележка „no trailing SELECT needed“.
- Топ решения: служебните акаунти вече не се появяват в списъка — съответствайки на публичната класация.
Задачите за създаване на таблици и индекси вече се решават точно както пише в условието — без недокументиран SELECT; обновяването на класацията на живо отново работи.
- DDL задачите (CREATE TABLE, ALTER, CREATE INDEX, външни ключове) вече не изискваха недокументиран проверяващ SELECT. Сега се оценяват по крайната схема на базата данни, а на страницата на задачата се показва бележка „no trailing SELECT needed“.
- Страница с класацията: обновяването на живо е възстановено — WebSocket връзката за класацията вече не прекъсва.
- Диаграма на схемата: при някои задачи не се показваха връзки между таблиците — стрелките на външните ключове вече се появяват на диаграмата.
- Диалоговият прозорец „Correct!“ вече не показва спад в ранга като покачване нагоре — значката за ранг се появява само при истинско повишение.
Задачите CREATE / ALTER TABLE и други многостъпкови решения могат да бъдат изпращани отново — лимитът на изрази за изпращане беше прекалено строг.
- Лимитът на изрази за изпращане е повишен от 3 на 20: DDL задачите (CREATE TABLE, ALTER, индекси, тригери) и многостъпковите DML вече не се отхвърлят с грешка „too many statements“.
MySQL вариантът на задачите от каталога отново е синхронизиран с PostgreSQL — някои MySQL задачи се оценяваха спрямо остарели данни.
- MySQL вариантът на стотици задачи се изпълняваше върху остарял набор от данни — seed данните са пресинхронизирани, отговорът в 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 вече не отхвърлят верен отговор като „extra columns“.
- Задача #768: условието вече съответства на оценявания отговор.
- Подсказката при грешен отговор вече не предлага сравняване с блока с примера, който умишлено не е точен.
- Чистите задачи UPDATE / DELETE / INSERT вече се оценяват по крайното състояние на таблицата — грешна промяна вече не се приема за вярна.
Поправени са пет задачи, при които текстът на условието не съвпадаше със схемата и отговора.
- Задачи #762, #763, #764, #765, #809: условието е пренаписано, за да съответства на реалната схема и очаквания отговор.
- AI генерирането на задачи, AI Mentor и формата за докладване на бъгове: при достигнат лимит вече показват „retry in N seconds“ вместо „ThrottlerException“.
Поправена е задача #17 — проверката връщаше NULL заради бъг в схемата.
- Задача #17 (
average-post-hiatus): схемата е приведена в съответствие със seed данните, проверката отново работи.
В задачата „Move old rows to archive in one go — race-free“ (#789) условието искаше колона customer_id, която не съществува в схемата. Формулировката вече е в съответствие с реалната схема и проверката: id, status, amount.
- Задача #789 (
hard-cte-atomic-archive): описанието споменаваше несъществуваща колонаcustomer_id. Формулировката вече съответства на схематаorders/orders_archiveи на очакваните колониid, status, amount.
Съобщението „Too many requests“ вече показва точния лимит и секундите до нулиране, вместо загадъчното „ThrottlerException“. Лимитът на заявки от страна на сървъра е повишен, така че бързата навигация в дадена пътека вече не опира до тавана.
- Лимитът на обикновени API заявки от страна на сървъра е повишен 5×. Бързото движение напред-назад между задачите в дадена пътека (10+ паралелни заявки при зареждане) вече не опира до тавана и не дава 429.
- При достигнат лимит на Submit или Run съобщението вече показва реалния лимит и точните секунди до повторен опит. Преди това се появяваше само загадъчното „ThrottlerException: Too Many Requests“ без подсказка за изчакване.
Бутонът „Start“ на картата на пътеката отново наистина стартира пътеката — невидим оверлей с връзка към картата прихващаше клика и го пренасочваше към страницата с детайли на пътеката.
- На
/trainer/tracksбутонът „Start“ на картата на пътеката вече не пренасочва към страницата с детайли на пътеката, вместо да я стартира. Кликът навсякъде по картата → детайли е запазен.
SQL пясъчник: ползвайте свои таблици и заявки — без задача, без проверка. Плюс единен широк bento изглед за класацията, прогреса, пътеките, задачите и сесиите.
- Нова страница
/sandbox— Monaco редактор, панел със схемата, панел с резултата, раздели с данни по таблица, сниппети за загряване. Анонимните сесии изтичат при бездействие след 30 мин, влезлите потребители получават 7 дни. - Запазени fiddle-и: до 5 в безплатния план, неограничено в Premium. Библиотека с търсене, копиране на връзка, изтриване и превключване на поверителността.
- Единен широк изглед за личните страници — My Fiddles, Progress, Leaderboard, Sessions, Tasks, Tracks и страницата с детайли на пътеката вече споделят един общ облик с градиентен hero и последователна мрежа от карти.
Стрелките за промяна на позицията в класацията се завърнаха — преди това колоната беше празна, защото нямаше базова снимка за сравнение.
- Индикаторът „изкачи се / падна / без промяна“ отново е до всеки ред в класацията. Базовата снимка за предходната седмица беше зададена; редовният седмичен cron ще продължи да я обновява.
Поправен е бъг, при който повторното изпращане на вече решена задача тихомълком премахваше Power — бонусът „от първи опит“ се изтриваше. На всички засегнати потребители Power е преизчислен.
- Повторното изпращане на решение за вече решена задача вече не изтрива бонуса „от първи опит“ — Power за тази задача остава същият, какъвто беше веднага след първото успешно изпращане.
- Задача #107 (разбивка на разходите по жанрове книги за 2005) вече не изисква конкретен ред на редовете — сега се приема всякакъв ред, в съответствие с формулировката на условието.
Поправен е панелът със схемата на БД при няколко задачи — оранжевите линии на връзките между свързаните таблици не се изчертаваха.
- При някои задачи панелът „Schema“ не показваше връзките между таблиците (оранжевите стрелки 1:N) — липсващите връзки бяха добавени към наборите от данни.
Поправена е задачата „Split customers into low / mid / high spenders“: примерният отговор и еталонното решение се бяха разминали с условието — сега навсякъде се използват идентификаторът на клиента и сегментите low / mid / high.
- Задача „Split customers into low / mid / high spenders“ (#757): примерният отговор и еталонното решение вече съответстват на условието — колони
customer_id,segment, сегментиlow/mid/high, подредени поcustomer_id.
Голям ребрандинг „Arena“: нова начална страница, изградена наново класация с подиум и обновяване на живо, точките преименувани на „Power“ с марка боен топор, преизградени учебни пътеки и адаптивно AI генериране на задачи, което наистина чете последните ви изпращания.
- Нов раздел „League“ — 30-те потребители, най-близки до вас по Power. Филтри по трудност в глобалния раздел (Power се преизчислява за всяка стълба). Стрелки нагоре / надолу до всяка позиция — движение спрямо предходната седмица.
- Постижения: емоджитата са заменени с векторни икони, оцветени по категория, тултиповете на браузъра показват локализирани имена; на
/statsе мрежа с попъри при докосване на мобилни устройства. Ново постижение „10 Expert“. - Посочете име в класацията за мини карта на потребителя. Бутон „Share rank“ — връзката води към публичния ви профил с OG преглед.
- Началната страница е пренаписана под марката „Arena“: ударно заглавие „Sharpen SQL. Take the offer.“, табло с резултати на живо в hero секцията, стълба на ранговете с пин „You“, секции за тренажора / пътеките / AI / режима Mock Interview / прогреса и заключителна лента „The axe is in your hand. Swing.“. Готова за мобилни устройства.
- Точките са преименувани на „Power“. Светкавицата е заменена с боен топор — вече и в логото, и във favicon-а, и в прегледа при споделяне на връзка.
- Страницата с класацията е пренаписана от нулата: подиум за топ 3 (злато / сребро / бронз), лична карта с прогрес с лента до следващия ранг, единна закачена лента с филтри, стълба на ранговете точно под заглавието, закачен ред „you“ когато сте извън топ 50, и обновяване на живо — таблицата реагира плавно на решенията на другите без презареждане.
- Учебните пътеки са преизградени. Analyst / Backend / QA / Data Engineering — по ~50 подбрани задачи всяка: по няколко представителя за всяка клетка тема×трудност, от загрявка до EXPERT, с уклон към задачи от реални интервюта. Добавена е пътека Data Engineering плюс отделна пътека за подготовка за интервю.
- Бутонът „Generate for me“ вече е истински адаптивен: чете последните ви 40 изпращания, избира темата с най-лошата скорошна точност и калибрира трудността спрямо нивото ви — застой смъква следващата с едно ниво, серия я повишава.
- Новите посетители попадат на тема „Night“ по подразбиране (преди беше „Evening“). Ако вече сте избрали тема, изборът ви се запазва.
- Задача „Say in one number: how many active customers“ — каноничното решение изискваше клиенти с ≥2 платени поръчки, докато описанието казва „at least once“. Поправено в съответствие с описанието.
EXPERT задачите вече дават честни 75 power за решение (до 281 с бонуси) вместо 10 от ниво EASY. Натрупаният power за потребителите, които вече са решили EXPERT, е преизчислен със задна дата.
- Таблицата с наградите нямаше ред за EXPERT, така че проверката се връщаше към стойност по подразбиране 10 и всяка EXPERT задача плащаше колкото EASY. Базата за EXPERT вече е 75 power, със същите множители отгоре (от първи опит ×2, преминаване на Mock Interview ×1.25, решение с premium ×1.5) — до 281 power за EXPERT задача. Миграция преигра
xp_totalза всеки профил по коригираните правила, така че всеки, който вече е решил EXPERT, получава липсващия power автоматично.
Затворена е вратичката, при която задача можеше да се „реши“ чрез твърдо записване на примерния изход: при 25 набора от данни проверката вече сверява заявката ви със скрити редове, различни от показаните в описанието на задачата.
- Решенията все още се изпълняват върху същите таблици и колони като преди, но редовете в seed данните за проверка се различават от видимия пример. Всеки истински отговор, базиран на заявка, продължава да минава, докато твърдо записан
SELECT … UNION ALL …, който копира литералите от примера, вече се оценява като „wrong“. Покрити са 25 набора от данни от последната партида на каталога (списъци, CTE, прозоречни, pivot, DML, expert).
Поправени са два докладвани от учащи проблема със задачи: разбърканият пример в „Students by region“ и описанието, разминало се със схемата в задачата за нетен приход.
- Задача „Students by region“ (#357): примерът вече е възходящ по
rn(Jack / Kim / Lars в първия ред), а еталонното решение носи изриченORDER BY rn, така че дава същия ред. - Задача „Users with net revenue of at least 100“ (#783): заглавието и описанието вече съответстват на реалните данни — потребители и събития
purchase/refund, а не продукти иsale/refund, с праг 100, а не 1000.
Шест напреднали задачи вече се доставят с предварително заредена таблица — решенията вече не започват с преамбюла CREATE TABLE.
- Шест задачи от ниво Hard / Expert (UPSERT по една и по няколко колони, CTE с
RETURNING, груповINSERT … RETURNING, опашкаSKIP LOCKED, разгъване на масив чрезUNNEST) се присъединиха към останалия напреднал каталог: таблицата се създава и зарежда в набора от данни, а решението съдържа само проверяваната операция плюс финаленSELECTза оценяване.
- Описанието на задачата „View counter“ вече не се разминава с очаквания изход: и двете вече описват една и съща таблица
counters(id, count)и пет изпълнения на същия ред.
DDL задачите вече не показват несвързани таблици в страничния панел със схемата.
- При 10 задачи
CREATE TABLE(от лесни до expert) страничният панел със схемата изобразяваше таблици от несвързан набор от данни — например задача за статии показвашеorders. Панелът вече е празен, както трябва да бъде, когато задачата иска да изградите таблицата от нулата.
115 нови задачи, тримоден превключвател на темата Day / Evening / Night и по-мека тъмна палитра.
- Каталогът нарасна със 115 задачи: 20 лесни, 35 средни, 45 трудни и 15 expert — подзаявки, CTE, прозоречни функции, DML/DDL, MERGE, оптимизация на заявки, транзакции, JSONB, рекурсия и
LATERAL. - Ново ниво на трудност «Expert» с виолетова значка и собствен филтър в каталога.
- Тримоден превключвател на темата: Day (светла), Evening (мека тъмна) и Night (дълбока) — изберете според околната светлина, за да облекчите умората на очите.
- Тъмната тема е омекотена: фонът премина към сиво-синьо в стил Linear (
#1B1B1F) вместо предишния почти черен, основният текст спадна до zinc-300 — по-малко зацапване при дълги сесии. - В режим «Night» панелът на SQL редактора стои три стъпки по-дълбоко от фона с лек уклон към истинско черно — чете се като вдлъбнат панел от същото семейство.
- Помощната справка по тема в задачата вече е съобразена с трудността: на нива Hard / Expert тя скрива базовите
SELECT/WHERE/ORDER BY/LIMITи вместо тях извежда напреднали модели —STRING_AGG,ARRAY_AGG,GROUPING SETS,LATERAL, JSONB, частични индекси и т.н. - Активните бутони на филтъра по трудност преминаха към меко запълване в акцентния цвят на марката вместо плътно черно — те вече не нарушават вида на светлата тема.
- Руски етикети за трудност: «Лёгкое» → «Лёгкий», «Среднее» → «Средний», «Сложное» → «Сложный».
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 „How many cardiology wards“ — преименувана е очакваната изходна колона от
countнаwards_count, така че вече не се сблъсква визуално със запазената дума.
Затворена е вратичката за нагласяне на отговорите спрямо примера: задачите вече се проверяват върху скрит набор от данни.
- Проверката вече може да изпълни задача върху скрит набор от данни. Каноничният еталон се преизчислява върху същите данни, така че верните решения продължават да минават, докато константите, заети от видимия пример, отпадат.
- Задачата „Oldest club member“ вече не приема твърдо записан
LIMIT, нагласен спрямо видимия пример — минава само заявка, която изразява „всички редове с минималната дата на раждане“.
Полиране на картите с цените и поправки на бутона „Sign in & subscribe“ веднага след v2.2.0.
- Цената и CTA бутонът в картите Free и Premium вече се подравняват на едно и също Y.
- Съкратени са бележките под цената за Crypto и Visa/MC — остава само името на платежния канал.
- Бутонът „Sign in & subscribe“ отново е кликаем за невлезли потребители.
Добавени са крипто и международни плащания с Visa/Mastercard, плюс затегнати анти-бот защити в процеса на удостоверяване.
- Крипто плащания през NowPayments — BTC, ETH, USDT и други. $21 тримесечно / $28 шестмесечно.
- Международни Visa/Mastercard през Paddle с автоматичен ДДС/данък върху продажбите. $21 / $28.
- Избор на метод на плащане в картата Premium: RU карта, Crypto, Visa/MC. Валутата се сменя според метода.
- Cloudflare Turnstile при вход и регистрация — невидим за хората, блокира ботове.
- Акаунтът се заключва за 15 мин след 5 грешни пароли (експоненциално до 24 ч) с изричен обратен брояч.
- Грешките при вход и регистрация са очовечени — край с голите „Forbidden“ или „Invalid credentials“.
- Лимит на изпращанията: 5/мин, 30/15мин на потребител. Не засяга реалните сесии за решаване.
- След вход се връщаме на страницата, от която сте дошли — включително при OAuth (Google, GitHub, Yandex).
- Излизането от публична страница вече не ви изхвърля към началната страница.
Завършена е поправката за запазване на Telegram, GitHub и LinkedIn на страницата с профила. Предишният релийз поправи нормализатора на потребителските имена в бекенда, но фронтенд компонентът прекъсваше onBlur — PATCH заявката всъщност никога не се изпращаше. Полето визуално приемаше въведеното, сървърът оставаше празен, а след презареждане полето беше празно. Сега сравнението при blur използва стойността, заснета при фокусиране, а не текущо въвежданото.
- Полетата Telegram, GitHub и LinkedIn на страницата с профила вече отново се запазват. Един useEffect презаписваше ref-а „last-saved“ при всяко натискане на клавиш, така че проверката при onBlur сравняваше текущата стойност със самата себе си и пропускаше PATCH. Проверката при blur сега сравнява със снимка, направена при фокусиране.
Поправено е запазването на Telegram, GitHub и LinkedIn потребителски имена на страницата с профила: писането на формата от плейсхолдъра като t.me/username се отрязваше до боклук от рода на t.me. Сега всяко въвеждане — само потребителско име, @handle, t.me/handle или https://t.me/handle — се нормализира до изчистено потребителско име.
- Полетата Telegram, GitHub и LinkedIn на страницата с профила вече се запазват правилно, когато адресът е написан без
https://. Преди товаt.me/durovсе запазваше катоt.me,github.com/octocatкатоgithub.com, защото нормализаторът изискваше схемаhttp(s)://и иначе отрязваше стойността при първата наклонена черта.
Премахнат е фалшиво положителният рекламен банер за premium в панела с резултата от решението: задействаше се при безплатни задачи и дори за premium потребители. Това беше мъртъв UI от самото начало — premium задачите са блокирани при отваряне, така че редакторът никога не ги вижда.
- В празничния модал „Correct!“ бутончето „+50% Power per solve — go Premium“ вече има правилен хоризонтален отстъп — короната и стрелката вече не докосват ръбовете на бутончето.
- AI Mentor вече получава компактен контекст на задачата: активния SQL диалект, таблиците, връзките, очакваните колони, примерния изход и последния diff от проверката. Еталонният SQL се използва само като частен контекст за обяснения на грешки и по-късните нива на подсказки.
- Рекламният банер „Interview tasks — Premium“ изчезна от панела с обратна връзка. Преди това всяка грешка от страна на сървъра, съдържаща думата
premiumв трасето си (например липсваща колонаsolved_as_premiumведнага след миграция), задействаше съвпадение по подниз и изобразяваше рекламата — дори при безплатни задачи и дори за premium потребители.
Premium вече дава +50% Power за всяка решена задача — бустът се закрепя за задачата завинаги, дори след изтичане на абонамента. AI Mentor вече не изсипва решението при първата подсказка и вече ескалира помощта за всяка задача поотделно. Освен това е премахнат началният коментар -- Click ▶ Run от редактора на първата задача.
- Premium абонаментът дава множител ×1.5 Power за всяка решена задача. Бустът се заключва в момента на решаване, така че остава в общата ви сума дори ако абонаментът по-късно изтече.
- Празничният модал „Correct!“ вече показва подкана за надграждане за безплатните потребители точно под чипа +Power: „Get +50% Power per solve — go Premium“, водеща към /pricing.
- AI Mentor вече ескалира подсказките за всяка задача. Първата заявка получава само насока без имена на оператори; заявки 2-4 добавят концепция и категория; от заявка 5 менторът може да назове
LIKE/WHERE/GROUP BYдиректно. Броячът се нулира на всеки 24 часа. - Обясненията на грешни отговори вече следват същите нива на подсказки като обикновените подсказки — те вече не разкриват конкретни оператори при първото неуспешно изпращане.
- Затворени са оставащите констатации от одита на SQL задачите: поправен е еталонът на Tournament Winners, подравнени са TIMESTAMP прегледите при няколко задачи и е възстановен PostgreSQL вариантът за една AI задача.
- Премахнат е началният коментар
-- Click ▶ Run — see what's in this tableот редактора на първата задача. Отворените задачи вече започват с празен редактор.
Преработени са филтрите на каталога със задачи: статусът стана сегментиран контрол с 3 състояния (All / Unsolved / Solved) с подразбиране Unsolved, добавен е филтър по диалект, чиповете за теми и компании вече показват текущия си брой задачи, активните филтри се показват като премахваеми бутони с възможност „Reset all“.
- Филтър по диалект в каталога: All / PG / MySQL — собствен сегмент до контрола за статус.
- Чиповете за теми и компании вече показват колко задачи съвпадат: „Windows (43)“, „Tinkoff (5)“. Чиповете с нула задачи избледняват.
- Ред с бутони за активни филтри: всеки приложен филтър (търсене, трудност, статус, диалект, любими, тема, етикет, компания, регион) се изобразява като премахваем бутон; „Reset all“ връща всичко към стойностите по подразбиране.
- Филтърът за статус на задачите вече е сегментиран контрол с 3 състояния (All / Unsolved / Solved) с подразбиране Unsolved. Замества единичния превключвател „Hide solved“.
- Контролът за подреждане е преместен в горната лента — преди беше заровен най-долу и скрит зад скрола.
- Превключвателят за любими е преместен в горната лента с филтри — вече е до другите двоични превключватели.
- Значката на филтрите вече не показва „1“ от самото начало — изгледът по подразбиране „Unsolved“ не се брои за приложен филтър.
Одит на целия каталог: проверката вече не отхвърля верни отговори заради сериализация DATE-срещу-TIMESTAMP, примерните прегледи при 60+ задачи вече съответстват на това, което всъщност връща еталонното решение, а 5 задачи, използващи CURRENT_DATE / NOW(), са фиксирани към определен момент, така че прегледите спират да се отместват ден след ден. Плюс поправка в описанието на задачата за месечни транзакции по доклад на потребител.
- Проверка: добавена е нормализация на дата като timestamp (
2024-01-01T00:00:00.000Z↔2024-01-01) — верните отговори спират да получават „row count matches, contents differ“ заради форматирането на типа на връщане. - Задача „Monthly transactions and chargebacks“: описанието вече пояснява, че chargeback принадлежи на месеца на първоначалната транзакция, а не на датата на връщането; прегледът показва дати от първия ден на месеца вместо ISO timestamp-и, отместени по часова зона.
- Регенерирани са примерните прегледи при 60+ задачи: числово форматиране (
100→100.00), показване на часова зона (+03→+00), DATE като TIMESTAMP, INTERVAL като обект — прегледът вече съответства на това, което връща изпълнителят на живо. - Пет задачи, използващи
CURRENT_DATE/NOW()/CURRENT_TIMESTAMPв seed данните си (#170, #601, #602, #668, #693), вече са фиксирани към2026-05-05 12:00:00 UTC. Прегледите спират да се отместват.
Преработен е блогът: търсене, навигация по 10 раздела, първите 7 урока за начинаещи. Имената на командите в помощната справка в задачата вече са кликаеми връзки към статии. Страницата с релийзи получи дърво на версиите със scroll-spy.
- Блог: търсене из заглавия, съдържание и етикети + ляв страничен панел с раздели. Активният раздел се осветява при скрол.
- Блог: 7 първи урока за начинаещи —
SELECT … FROM,WHERE,ORDER BY,LIMIT,INNER JOIN,LEFT JOIN, псевдоними. - Помощна справка по тема в задачата: имената на командите вече са сини връзки към съответния урок в блога — отварят се в нов раздел.
- Страница с релийзи: дърво на версиите отляво, групирано по
major.minor; кликването скролва до версията и обновява хеш котвата. - Бутон „Copy SQL“ на всеки ред в раздела Submissions.
- Правилно съгласуване на множествено число на руски навсякъде: „221 задача“, „2 задачи“, „5 задач“ вместо старото „221 задач“.
- Помощната справка по тема в задачата вече не подскача при разгъване — мястото за лентата за скролване вече е запазено.
- Markdown таблиците в статиите от блога вече се изобразяват като HTML таблици вместо като един обикновен текстов ред.
Качествен преглед на целия каталог: поправени са 23 неизпълними задачи, пренаписани са 66 английски описания, подравнени са описанията и примерните прегледи при още няколко десетки. Плюс една поправка, докладвана от потребител.
- Примерните прегледи при 50+ задачи вече съответстват на това, което връща еталонното решение.
- Свити са дублираните етикети на компании в чиповете на филтъра за задачи.
- Поправени са 23 задачи (pharma-*, loyal-*, hotel-*, qa-*), които не можеха да бъдат решени заради несъответствие между схема и seed данни.
- Пренаписани са английските описания на 66 задачи lc-* / lc2-*, които преди се доставяха с мостра или фрагмент.
- Задачата „Rooms Booked on September 2, 2019“ вече не приема грешния отговор.
- Десет задачи, при които описанието не съвпадаше с еталонното решение, вече са съгласувани.
- Седем задачи на Tochka се доставяха с чуждо условие — пренаписани са.
69 нови задачи, взети от реални интервюта за работа на руския пазар (Yandex, Tinkoff, Sber, VTB, Alfa, VK, Ozon, Avito, Magnit, Samokat и още 23 компании) — изградени около по-широката вселена от типове на PostgreSQL: UUID, JSONB, ENUM, INTERVAL, TSTZRANGE, INET, NUMERIC и POINT. Плюс ключови поправки по доклади на потребители и индикатор с червена точка „What's new“ в страничното меню.
- 69 нови задачи, взети от реални интервюта в руски компании. 33 работодатели: Yandex, Tinkoff / T-Bank, Sber / SberMarket, VTB, Alfa-Bank, Gazprombank, Rosbank, Sovcombank, MTS / MTS Bank, Otkritie, Renaissance Bank, Megafon, VK, Ozon, Avito, Magnit, Lenta, Wildberries, Cian, ivi, Delimobil, Aviasales, Samokat, Domclick, Lesta, Skypro, Uchi.ru, Sravni.ru, Vizor, CloudReports и Yandex Practicum. Всички с етикет Interview, достъпни за Premium.
- Богати типове на PostgreSQL в схемите на задачите. Повечето задачи преди използваха
INT+VARCHAR(100)— добре за учебникарски примери, далеч от продукцията. Новите задачи въвеждатUUIDза PK на клиенти и поръчки,NUMERIC(15,2)за пари иNUMERIC(12,4)за валутни курсове,TIMESTAMPTZза събития,INTERVALза продължителности на разговори и сесии,TSTZRANGE/DATERANGE/NUMRANGEза SCD2 истории и прозорци на валидност,JSONBза метаданни и полезен товар на събития,ENUM(с изриченCREATE TYPE) за статуси и категории,INETза IP в задачите за антифрод,POINTза GPS координати,TEXT[]/INTEGER[]за етикети и масиви от идентификатори. Така тренажорът ви запознава със същите типове, които ще срещнете в продукцията. - Индикатор с червена точка на елемента „What's new“ в страничното меню — появява се, когато е излязъл нов релийз, който още не сте отворили. Точката изчезва след едно посещение на
/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.
- Шестте поправени задачи по-горе също получиха обогатена схема в същия стил като новия комплект интервюта:
UUIDпървични ключове,JSONBполезен товар,ENUMтипове за пол / категории / статуси,NUMERIC(15,2)вместоINTза заплати и цени,INTERVALза продължителности. Формулировката на задачите беше леко коригирана, за да обоснове новите типове, но основният проблем остава непроменен. Това е първата стъпка в надграждането на по-старите задачи — още в предстоящите релийзи.
- Поправени са няколко по-стари задачи, докладвани от потребители. „Project Employees II“ — ER диаграмата показваше Employee + Department вместо Project + Employee, докато реалната схема беше правилна; приведохме диаграмата в съответствие. „Reported Posts“ — описанието не уточняваше, че причината за докладването е в колоната
extra: сега го прави. „Sales Analysis I“ — еталонното решение използвашеSUM(price), въпреки че схемата има колонаquantity, което бъркаше; преформулирано катоSUM(quantity * price), по-близко до реалния приход. „Swap Salary“ — задачата беше свързана с грешен набор от данни (Employee + Department вместоSalary(id, name, sex, salary)), което я правеше нерешима; пресвързана с каноничния набор от данни. Същото тихо разминаване в ER диаграмата при „Project Employees III“ и „Reported Posts II“ получи същата поправка.
Голям релийз: нова навигация с лента отляво, строгият режим Mock Interview с бонус +25% Power, публични профили и приятели, имейл известия, теги на компании в цветовете на марките, допълнителни филтри и блок с партньорски курсове. Плюс важна поправка за поверителност между акаунти и десетки UX подобрения.
- Блок с партньорски курсове. На страницата със задачи (на широки екрани) дясна колона показва подбран набор от партньорски курсове; на мобилни устройства е хоризонтален въртележка над списъка. Картите водят към лендинг страници на партньори с UTM етикети — за нас това е начин да поддържаме цената на абонамента ниска, покривайки инфраструктурните разходи.
- Нов режим Mock Interview — строга симулация на реално интервю. Всяко единично нарушение (смяна на раздел, поставяне, излизане от цял екран, > 1 секунда загуба на фокус на прозореца) автоматично проваля сесията. Подсказките, AI Mentor и помощната справка са скрити и заключени. Продължителности: 5 / 10 / 15 / 30 / 60 минути. Безплатен план — 1 опит на ден; Premium — неограничено. Докато сесията е активна, заобикалящата навигация (страничната лента, „Tasks“, „Top solutions“, „Next task“, „Leave track“, Prev/Next/Random) е заключена — единственият изход е изричният бутон „End“ или затварянето на раздела (което автоматично изоставя сесията).
- +25% Power за всяка задача, решена в режим Mock Interview — бонусът е за всяка задача поотделно и е отбелязан в отчета след сесията. Класацията вече има информационна колона „Mock“ (същият брой се показва в картата на профила и на
/u/<username>); тя не влияе на подреждането по Power. - Публични профили на
/u/<username>: изберете кратко потребителско име и включете публичния превключвател — всеки анонимен посетител вижда ранга ви, Power, текущата серия, броя постижения, топлинната карта на активността и връзките към GitHub / Telegram / LinkedIn. Не се разкриват лични данни. - Приятели: добавяйте потребители по публичното им потребителско име, управлявайте входящи и изходящи заявки, вижте специален раздел с класация на приятелите с техните Power, серия и решени задачи.
- Любими: всяка карта на задача вече има звезда — кликнете я и задачата попада във филтъра „Favourites only“. Списъкът се пази на сървъра, свързан с акаунта ви, и оцелява при смяна на браузъри.
- Имейл известия (превключватели в профила). „Save your streak“ — вечерно напомняне, когато серията ви е ≥ 3 дни и днес не сте решили нищо. „Weekly digest“ — съботно сутрешно обобщение с решените задачи от изминалата седмица, текущата серия и най-слабата категория.
- Premium потребителите са визуално отбелязани навсякъде, където се появяват аватари: холографски градиентен пръстен (класация, приятели, профил, странична лента, публична страница
/u/<username>); малка значка корона в ъгъла на големите аватари. Не влияе на подреждането. - Теги на компании в цветовете на марките по картите на задачите: жълто за Yandex / Tinkoff / Beeline, зелено за Sberbank / Spotify / OpenAI, синьо за VK / Ozon / Google / Meta, червено за MTS / Alfa / Tesla, виолетово за Stripe / Skypro / Wayfair, оранжево за Amazon / Alibaba и така нататък. Преди това всеки таг беше в един виолетов цвят.
- Допълнителни чипове за SQL клаузи във филтъра „Topic“ на страницата със задачи: освен 8-те широки категории (SELECT, JOIN, подзаявки, прозоречни, агрегатни, CTE, DML, DDL) вече можете да включите
GROUP BY,COUNT,HAVING. Комбинирайте ги с категориите за по-точно филтриране. - Панелът „DB Schema“ на страницата на задачата вече може да се свива. Превключвателят до заглавието на задачата скрива колоната и освобождава ширина за редактора и таблицата с резултата. Състоянието на свиване се запомня за всеки браузър, така че схемата се отваря по същия начин при следващата задача.
- 8 нови задачи от интервюта от Tochka — вариращи от EASY до HARD. CRM сценарии (намиране на клиенти с активна заявка), портфейлни изчисления (структура, среднопретеглен срок до падеж, динамика на стойността), заявки за облигации с прозоречни функции. Решения за PostgreSQL и MySQL.
- Раздел блог на
/blog. Дълги уроци — започвайки със задълбочен разбор на прозоречните функции. Двуезично съдържание, slug URL адреси, OG карти за споделяне в социалните мрежи. Достъпен от долния колонтитул и от дъното на страничната лента. - Персонализирана страница 404. Старата страница по подразбиране на Next.js показваше черен текст на бяло — невидим в тъмен режим. Новата страница използва токени на темата и се намира в общия облик, държейки навигацията под ръка.
- Навигацията е редизайнирана. За влезли потребители вътре в приложението основната навигация се премести в лента отляво — Trainer, Progress, Leaderboard и другите раздели са там, с Power + серия под аватара ви и превключватели за език/тема най-долу. Началната страница, ценообразуването и потоците за удостоверяване запазват тънката горна лента. Помощните страници (What's new / Report a bug / Blog) наследяват облика, от който сте дошли.
- Premium градиентният пръстен около аватарите вече се показва във всеки раздел на класацията — преди това пръстенът се появяваше само в раздела „All time“ и тихомълком отпадаше в „Week“ и „Month“, защото бекендът не подаваше флага за абонамент за периодичните класации.
- Редакциите на името и аватара в профила ви вече се отразяват незабавно в страничната лента — без нужда от презареждане на страницата. Преди това старата карта на потребителя можеше да се задържи до пълно опресняване.
- Изтичане на данни между акаунти при смяна на потребители в същия браузър. Преди това, след излизане / влизане с друг акаунт, тези можеха да се запазят: разговори с AI Mentor, чернови на SQL в редактора, флагове „solved“ за отделните задачи, активни сесии на mock interview, брояч на AI генериране, кеш на любимите. Сега излизането и всеки път на влизане (форма, OAuth, имейл потвърждение) изтрива всичко, свързано с предходния потребител.
- Връзката „Friends rating“ от профила вече води директно към раздела Friends — преди това ви оставяше на глобалната класация. Лентата за начинаещи „Start here“ вече не се връща, след като сте я отхвърлили; преди това отхвърлянето се нулираше при всяко излизане / влизане.
- Десетки подобрения на мобилното оформление и взаимодействието: по-компактен модал с отчета след сесия, правилни отстъпи на филтрите на тесни екрани, банерът с обратна връзка вече не застъпва страничния панел при 1024px, полета за име + имейл на страницата за докладване на бъг за анонимни подаващи.
Спешна поправка на UX на редактора на тесни екрани: попъпът „Editor settings“ вече не се отрязва от панела с кода и вече не излиза извън ръба на изгледа на мобилни устройства. Същият бутон зъбно колело, който има десктопът, вече присъства и в мобилната лента с инструменти, а настройката за размер на шрифта най-сетне се прилага към мобилния редактор.
- Попъпът „Editor settings“ можеше да се отреже от ръбовете на страницата и нямаше вътрешен скрол — на тесен лаптоп или телефон половината настройки просто бяха невидими. Попъпът вече се изобразява върху цялата страница (чрез портал), автоматично се прихваща към видимата зона и развива вътрешна лента за скролване, когато съдържанието му надхвърли височината на изгледа. Заглавката със заглавието и бутона за затваряне остава закачена при скролване.
- В мобилния изглед на редактора (≤1024px) лентата с инструменти нямаше зъбното колело за настройки на редактора — „Font size“ беше достъпно само от десктопа. Зъбното колело вече стои до PG/MySQL и Format, а настройката за размер на шрифта наистина мащабира мобилния вход на редактора.
Спешна поправка по доклад за бъг: задача #240 („Staff Bonuses“) показваше грешна схема — показваше Employee + Department вместо реалните Employee + Bonus, правейки условието нечетимо.
- Задача #240 „Staff Bonuses“: визуализаторът на схемата изобразяваше остарели таблици
Employee + Department(с полетаdepartment_id,manager_id) и кух разделDepartment. Пясъчникът и еталонното решение бяха правилни през цялото време — само метаданните на визуализатора бяха грешни. Сега схемата показва реалните таблициEmployee + Bonusс връзкатаBonus.empId → Employee.empId.
Обогатени набори от данни при 268 от 339 задачи — по-пълни изходни таблици, по-смислени редове в очаквания изход, задачите вече не изглеждат развалени.
- Масово обогатяване на наборите от данни: 268 от 339 задачи получиха по-пълни seed данни — обикновено 6-12 реда в основните таблици вместо 2-4, с разнообразие по осите филтриране/JOIN/GROUP BY, които еталонното решение използва. Засегнати са 137 уникални набора от данни. Еталонните решения и схемите не са променени. Прогресът на потребителите е запазен — вече решените задачи остават решени, Power и постиженията не се преизчисляват.
- Всяка обогатена задача беше валидирана: еталонното решение беше изпълнено върху новите seed данни чрез изпълнителя, sample_output регенериран от реалния резултат.
- Задача #38 (
well-paid-employees) — първоначално спешна поправка във v1.2.4, сега част от по-широкия преглед.
Спешна поправка по доклад за бъг: панелът „Expected output sample“ вече пояснява, че броят редове там не трябва да съвпада с таблиците в схемата.
- Добавено е пояснение над панела „Expected output sample“: „това е как изглежда верен отговор — броят му редове е негов собствен, не е нужно да съвпада с таблиците в схемата“. Преди това потребителите броеха редовете в една от таблиците на схемата и предполагаха, че задачата е развалена, когато числата се различаваха.
Спешна поправка по доклад за бъг: задача #38 „Salary higher than manager“ вече се изпълнява върху подходящ набор от данни с три реални случая. Плюс малка оранжева точка на „What's new?“, когато излезе нов релийз.
- Малка оранжева точка се появява на елемента от навигацията „What's new?“, когато излезе нов релийз. Едно посещение на
/releasesя премахва до следващия релийз.
- Задача #38 (
well-paid-employees): наборът от данни беше прекалено оскъден — 6 служители и един-единствен случай „подчинен печели повече от мениджъра“, което я караше да изглежда, че данните са грешни. Разширен до 9 служители в два отдела с три ясни случая (Eve > Alice, Frank > Dave, Henry > Bob).
Нова страница „Report a bug“ с прикачени екранни снимки, вторична група в навигацията и по-компактна лента „Start here“ на мобилни устройства.
- Нова страница „Report a bug“ в навигацията: форма с тема + описание с до 5 екранни снимки / кратки клипа (поддържа се drag-and-drop). Докладите попадат в нашата пощенска кутия за бързо обработване.
- Навигацията получава вторична група — „What's new?“ и „Report a bug“ — отделена от основните раздели с тънка вертикална разделителна линия.
- Лентата за начинаещи „Start here“ е по-компактна на мобилни устройства — по-кратко заглавие, скрито описание, по-тесни карти. Освобождава място за самия списък със задачи.
- Лентата за начинаещи „Start here“ вече не премигва за части от секундата при отваряне на страницата със задачи — сега се изобразява едва след като
/progressсе зареди. - Акцентът в бележките за релийза (горният едноредов текст) вече изобразява правилно обратните апострофи — преди това показваше буквалното „
?lang=“ вместо стилизирано бутонче с код. - Призрачната вертикална лента за скролване на страницата „Learning Tracks“ изчезна —
min-h-screenв комбинация с навигацията налагаше ~60px допълнителна височина дори когато съдържанието се побираше.
UX полиране из целия тренажор плюс URL параметър ?lang= за реклами и директни връзки за конкретен език.
- Попадайте на конкретен език чрез
?lang=enили?lang=ruв URL адреса:https://sql.coderang.dev/?lang=en. Удобно за реклами и споделяне на връзки за конкретен език; изборът се запомня за една година.
- Когато дневните AI подсказки свършат, бутонът „Explain“ се превръща в „Cheatsheet“ и отваря справката по тема.
- Звездата за любими вече е видима на мобилни устройства и леко видима на десктоп, вместо скрита до посочване с мишката.
- Описанието на задачата вече не подскача, когато помощната справка се разгъва. Звездата е по-ярка при посочване.
- При DDL задачите панелът със схемата показва „no starting tables; create them“ вместо празно платно.
- AI бутонът вече наистина пулсира само при грешки (класът за анимация не беше дефиниран преди това).
- Power и Streak в навигацията се зареждат от localStorage преди заявката към сървъра — край с премигването „0 ⚡“.
- Броячът на AI генериране вече не се нулира на 0 след пренасочване към генерираната задача.
- Мобилни приятни детайли: значки за трудност с еднаква ширина (звездата подравнена), текстът на долната лента с раздели се побира, анимация на мащабиране на дневния брояч, тултип на иконата за серия, руски правила за множествено число.
- Имената на руските компании (Сбербанк, Яндекс, Авито…) вече се изобразяват в латинска транслитерация (Sberbank, Yandex, Avito) на английския интерфейс; кирилицата остава на руски.
- Имената на записите в помощната справка (Aliases, Scalar subquery и т.н.) вече се превеждат правилно при смяна на езика.
- Седмичната/месечната класация вече прилага бонуса от първи опит ×2 и игнорира повторните изпращания, в съответствие с начина, по който се изчислява натрупаният Power. Преди това изгледът за периода показваше приблизително половината от натрупаното — бъг в изчислението, не в данните.
- Премахнат е мъртъв раздел Solutions — нито един бутон не го активираше, но той дублираше натоварването.
- Обратните апострофи вече не оставят празнина преди следваща пунктуация („
Action.“). - Празните състояния на панела с резултата вече се превеждат правилно на английски.
Полиране на задачите за промяна на данни и общо изобразяване на описанията.
- Предупреждение за DDL/DML задачите: задачите UPDATE/INSERT/DELETE и CREATE/ALTER/DROP вече показват кратка бележка „no trailing SELECT needed“ — край с гаданията какво да се извежда.
- Помощната справка по тема вече зачита типа на задачата: DML задачите вече не показват SELECT/ORDER BY/LIMIT, а DDL задачите показват само команди за промяна на схемата.
- Маркираните с обратни апострофи токени в описанията на задачите (\
id = 4\, \users.email\) вече се изобразяват като акцентни бутончета с код вместо суров текст — описанията се четат точно както авторите ги пишат. - Блоковете с код в помощната справка вече имат акцентна лента отляво и фина рамка — четат се като истински сниппети с код вместо като сиви петна.
Въвеждане за новодошли: лента „Start here“, стартов SQL за първата ви задача и помощна справка по тема във всяка задача. Подсказките при грешен отговор вече са конкретни и не изразходват AI квотата ви.
- Лента „Start here“ в горната част на страницата със задачи — 8 прости SELECT задачи за начинаещи. Показва се, докато не решите нещо; скролва се чрез влачене с курсор хващане.
- Стартов SQL в редактора. Първата задача, която отворите, предварително попълва
SELECT * FROM <first_table> LIMIT 5;, така че да можете да натиснете ▶ веднага и да видите как изглеждат данните. - Помощна справка по тема. Панелът на задачата вече има сгъваем справочен блок със съответните SQL команди, синтаксис и обяснение в един ред — съобразен с темата: SELECT, JOIN, агрегатни, подзаявки, прозоречни, CTE, DML, DDL.
- Банерът при грешен отговор вече е конкретен: назовава излишни/липсващи колони, разлики в редовете, проблеми с подреждането и често срещани SQL грешки. Работи локално, без изразходване на AI квота.
Автодовършване, съобразено с псевдонимите, в SQL редактора и значителни подобрения на мобилното оформление.
- Страница с релийзи: историята на обновяванията вече е видима на /releases.
- Автодовършване, съобразено с псевдонимите. След
<alias>.предложенията са ограничени до колоните на тази единствена таблица. Самите псевдоними се довършват с Tab. .вече е знак за задействане: предложенията изскачат автоматично след него, без нужда от Ctrl+Space.
- Мобилното меню вече се наслагва върху съдържанието, вместо да избутва страницата надолу. Затваря се при докосване отвън.
- 300+ описания на задачи са пренаписани: добавен е бизнес контекст, изброени са изходните колони, подреждането и закръгляването са направени изрични.
- Описанието на задача на мобилни устройства вече се скролва правилно, когато текстът е дълъг. Преди това засядаше и блокираше достъпа до разделите долу.
- Долната лента с раздели на тренажора вече винаги е видима на всеки мобилен браузър (Yandex Browser, MIUI, Samsung Internet). Преди това се отрязваше под изгледа.
- Мобилното меню вече е напълно непрозрачно. Преди това 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, плюс регистрация с имейл/парола.
- Класация на базата на XP (Power), потребителски профили, постижения, тъмна и светла тема.
- Premium абонамент с интеграция на YooKassa и анти-бот ограничаване на честотата.
- Интерактивни ER диаграми на схеми, Monaco редактор с подсветка и форматиране на SQL.
- Двуезичен интерфейс: руски и английски.