Novidades
Histórico de atualizações do SQL Arena. As versões mais recentes ficam no topo.
- O Mapa de habilidades agora cobre todas as categorias de exercícios (adicionados CTE, DDL, transações, otimização) e ficou maior e mais legível.
- A dica "o que reforçar" do Mapa de habilidades agora aponta para o tema com mais exercícios não resolvidos, não para um aleatório.
- O gráfico de atividade anual volta a mostrar os nomes dos meses por extenso em vez de cortá-los para uma letra.
- Soluções que retornam um intervalo de tempo (por exemplo, a diferença de dois horários) não falham mais ao enviar.
- Exercício #88: dados corrigidos — as partidas de Paris agora têm durações distintas em vez de três linhas idênticas.
- Desfazer (Ctrl+Z) no editor agora mantém histórico separado por cada aba de consulta.
- Exercício #624: o enunciado agora indica que o preço médio deve ser arredondado para 2 casas decimais.
- As sugestões do editor SQL não se duplicam mais ao navegar entre exercícios.
- Exercício #621: clubes sem membros agora aparecem no resultado com receita zero.
- O exercício #831 mudou de dificuldade EXPERT para MÉDIO.
O SQL Arena agora é multilíngue: inglês, espanhol e português, cada um com suas próprias URLs de página e detecção automática de região.
- Seletor de idioma: russo, inglês, espanhol (Espanha e América Latina) e português.
- Na primeira visita, o site abre no idioma da sua região, e sua escolha fica salva.
- Cada idioma tem suas próprias URLs de página (/en, /es, /es-419, /pt-br) que podem ser compartilhadas com segurança.
- Pagamento do Premium na sua moeda local: RUB, USD, EUR ou BRL conforme a região.
- A versão em inglês do site está completa; as traduções para espanhol e português estão sendo lançadas aos poucos.
Os exercícios de criação de tabelas aceitam qualquer forma de escrita válida, as dicas de erro agora são pertinentes e um exercício com resposta ambígua foi corrigido.
- O exercício do "par de cursos mais popular": os dados de teste permitiam várias respostas igualmente válidas enquanto a correção aceitava apenas uma. Agora o exercício tem uma única resposta correta.
- Os exercícios de CREATE TABLE rejeitavam uma solução correta quando o aluno nomeava uma restrição (por exemplo,
CONSTRAINT ... PRIMARY KEY). A correção agora compara a estrutura da tabela — os nomes das restrições não são mais considerados. - Um exercício de criação de tabelas com falha mostrava uma dica irrelevante sobre
ORDER BY. Agora a dica é pertinente — sobre colunas, tipos, NOT NULL e chaves.
Os exercícios de modificação de dados são resolvidos exatamente como o enunciado diz — sem um SELECT de verificação não declarado.
- Os exercícios de INSERT/UPDATE/DELETE e de transações (incluindo UPSERT, MERGE, SKIP LOCKED) não exigiam mais adicionar um SELECT de verificação que o enunciado não mencionava. Agora são corrigidos pelo estado final das tabelas, e a página do exercício mostra o aviso "não é preciso um SELECT no final".
- Top de soluções: as soluções de contas internas não aparecem mais na lista — igual à classificação pública.
Os exercícios de criação de tabelas e índices agora são resolvidos exatamente como o enunciado diz — sem um SELECT não declarado; a atualização ao vivo da classificação foi restaurada.
- Os exercícios DDL (CREATE TABLE, ALTER, CREATE INDEX, chaves estrangeiras) não exigiam mais adicionar um SELECT de verificação que o enunciado não mencionava. Agora são corrigidos pelo esquema final do banco de dados, e a página do exercício mostra o aviso "não é preciso um SELECT no final".
- Página de classificação: atualização ao vivo restaurada — a conexão WebSocket da classificação não cai mais.
- Diagrama de esquema: alguns exercícios não mostravam os vínculos entre tabelas — agora as setas de chaves estrangeiras aparecem no diagrama.
- A janela "Correto!" não mostra mais uma queda de rank como uma promoção com seta para cima — o selo de rank aparece somente em uma promoção real.
Os exercícios de CREATE / ALTER TABLE e outras soluções de várias etapas podem ser enviados novamente — o limite de instruções por envio era rígido demais.
- O limite de instruções SQL por envio subiu de 3 para 20: os exercícios DDL (CREATE TABLE, ALTER, índices, triggers) e o DML de várias etapas não são mais rejeitados com um erro de "instruções demais".
A variante MySQL dos exercícios do catálogo voltou a ficar sincronizada com o PostgreSQL — alguns exercícios em MySQL eram corrigidos com dados desatualizados.
- A variante MySQL de centenas de exercícios era corrigida com um conjunto de dados desatualizado — os seeds foram reconstruídos e a resposta no MySQL volta a coincidir com o PostgreSQL.
- Seis exercícios que funcionavam apenas no PostgreSQL agora têm uma variante MySQL operacional.
- Os exercícios de CREATE TABLE / CREATE INDEX / ALTER são corrigidos pelo esquema final das tabelas — uma estrutura incorreta não é mais aceita como correta.
- Os exercícios de INSERT com CURRENT_TIMESTAMP / NOW() não rejeitam mais uma resposta correta por uma diferença no momento de execução.
- Os exemplos de saída que mostravam por acidente a resposta exata foram substituídos por amostras sem spoiler; a ordem das linhas é verificada onde o exercício exige.
- Uma auditoria de todo o catálogo realinhou o enunciado, os dados de correção e a solução de referência em várias dezenas de exercícios onde tinham se desalinhado entre si.
Corrigimos a verificação de soluções em exercícios com várias instruções — um DELETE/UPDATE com um SELECT final agora é corrigido corretamente.
- As datas e horas nos resultados das consultas agora aparecem de forma limpa como
2024-01-15 08:00:00em vez do formato ISO técnico.
- Os exercícios com DML (DELETE, UPDATE, INSERT) e um SELECT de verificação não rejeitam mais uma resposta correta por "colunas a mais".
- Exercício #768: o enunciado agora corresponde à resposta corrigida.
- A dica ao errar uma solução não sugere mais comparar com o bloco de exemplo, que é intencionalmente impreciso.
- Os exercícios de UPDATE / DELETE / INSERT puro agora são corrigidos pelo estado final das tabelas — uma mutação incorreta não é mais aceita como correta.
Corrigimos cinco exercícios em que o texto do enunciado não correspondia ao esquema nem à resposta.
- Exercícios #762, #763, #764, #765, #809: o enunciado foi reescrito para corresponder ao esquema real e à resposta esperada.
- Geração de exercícios com IA, AI Mentor e o formulário de reporte de bugs: ao atingir o limite de requisições, agora mostram "tente novamente em N segundos" em vez de "ThrottlerException".
Corrigimos o exercício #17: o corretor retornava NULL por causa de um erro no esquema.
- Exercício #17 (
average-post-hiatus): o esquema foi alinhado ao seed e o corretor voltou a funcionar.
No exercício "Mova as linhas antigas para o arquivo de uma só vez, sem condições de corrida" (#789), o enunciado pedia uma coluna customer_id que não existe no esquema. O texto agora corresponde ao esquema e ao corretor reais: id, status, amount.
- Exercício #789 (
hard-cte-atomic-archive): o enunciado mencionava uma colunacustomer_idinexistente. Agora o texto corresponde ao esquemaorders/orders_archivee às colunas esperadasid, status, amount.
A mensagem "muitas requisições" agora mostra o limite exato e os segundos restantes até a reinicialização, em vez do enigmático "ThrottlerException". Aumentamos o limite de requisições do servidor para que a navegação rápida por uma trilha não atinja mais o teto.
- O limite de requisições do servidor para chamadas de API comuns foi multiplicado por 5. A navegação rápida entre exercícios de uma trilha (mais de 10 requisições paralelas ao montar) não atinge mais o teto nem retorna erros 429.
- Ao atingir o limite de requisições em Submit ou Run, a mensagem agora mostra o limite real e os segundos exatos para tentar de novo. Antes só aparecia o enigmático "ThrottlerException: Too Many Requests" sem indicar quanto esperar.
O botão "Começar" no cartão da trilha volta a iniciar a trilha: uma camada de link invisível interceptava o clique e o redirecionava para a página de detalhes da trilha.
- Em
/trainer/tracks, o botão "Começar" no cartão da trilha não leva mais à página de detalhes em vez de iniciar a trilha. O clique em qualquer ponto do cartão para ver os detalhes foi mantido.
Ambiente de testes SQL: traga suas próprias tabelas e consultas, sem exercício nem correção. Além disso, um layout bento amplo e unificado em classificação, progresso, trilhas, exercícios e sessões.
- Nova página
/sandbox: editor Monaco, painel de esquema, painel de resultados, abas de dados por tabela e trechos de aquecimento. As sessões anônimas expiram após 30 min de inatividade; usuários conectados têm 7 dias. - Ambientes salvos: até 5 no plano gratuito, ilimitados no Premium. Biblioteca com busca, cópia de link, exclusão e alternância de privacidade.
- Layout amplo unificado nas páginas do espaço pessoal: Meus ambientes, Progresso, Classificação, Sessões, Exercícios, Trilhas e a página de detalhes de uma trilha agora compartilham o mesmo contêiner com um hero em degradê e uma grade de cartões consistente.
As setas de mudança de posição na classificação voltaram: antes a coluna ficava vazia porque não havia um snapshot de referência para comparar.
- O indicador "subiu / desceu / sem alteração" voltou ao lado de cada linha da classificação. O snapshot de referência da semana anterior foi gerado; a partir de agora o cron semanal o manterá atualizado.
Corrigimos um erro pelo qual reenviar um exercício já resolvido removia Power silenciosamente: o bônus de "resolvido na primeira tentativa" era apagado. O Power de todos os usuários afetados foi recalculado.
- Reenviar uma solução de um exercício já resolvido não remove mais o bônus de "resolvido na primeira tentativa": o Power desse exercício continua igual ao que era logo após o primeiro envio correto.
- O exercício #107 (detalhamento de gastos por gênero em 2005) não exige mais uma ordem específica do resultado: agora qualquer ordem de linhas é aceita, conforme o enunciado.
Corrigimos o painel de esquema do banco de dados em vários exercícios: as linhas laranja de relacionamento entre tabelas vinculadas não eram desenhadas.
- Em alguns exercícios o painel "Esquema" não mostrava os relacionamentos entre tabelas (as setas laranja 1:N): adicionamos os relacionamentos faltantes aos datasets.
Corrigimos o exercício "Divida os clientes em gasto baixo / médio / alto": a resposta de exemplo e a solução de referência tinham se desviado do enunciado; agora tudo usa o id do cliente e os segmentos low / mid / high.
- Exercício "Divida os clientes em gasto baixo / médio / alto" (#757): a resposta de exemplo e a solução de referência agora correspondem ao enunciado: colunas
customer_id,segment, segmentoslow/mid/high, ordenado porcustomer_id.
Um grande rebranding "Arena": nova página inicial, uma classificação refeita do zero com pódio e atualizações ao vivo, os pontos renomeados como "Power" com um logo de machado de combate, trilhas de aprendizado reconstruídas e uma geração de exercícios com IA adaptativa que realmente lê seus envios recentes.
- Nova aba "Liga": os 30 usuários mais próximos de você por Power. Filtros de dificuldade na aba global (o Power é recalculado para cada escala). Setas de subida / descida ao lado de cada posição: o movimento de uma semana para a outra.
- Conquistas: os emojis foram substituídos por ícones vetoriais na cor da categoria, e os tooltips do navegador mostram nomes localizados; em
/statshá uma grade com pop-ups ao toque no celular. Nova conquista "10 Experts". - Passe o cursor sobre um nome na classificação e abre-se um minicartão do usuário. Um botão "Compartilhar ranque": o link leva ao seu perfil público com uma pré-visualização OG.
- Página inicial reescrita sob a marca "Arena": um título impactante "Afie seu SQL. Consiga a oferta.", um placar ao vivo no hero, uma escala de ranques com um marcador "Você", seções sobre o treinador / as trilhas / a IA / o modo entrevista / o progresso e uma faixa final "O machado já está na sua mão. Ataque.". Pronta para celulares.
- Os pontos passam a se chamar "Power". O raio foi substituído por um machado de combate, que agora aparece no logo, no favicon e na pré-visualização ao compartilhar links.
- A página de classificação foi reescrita do zero: pódio para o top 3 (ouro / prata / bronze), cartão de progresso pessoal com uma barra até o próximo ranque, uma única barra de filtros fixa, a escala de ranques logo abaixo do cabeçalho, uma linha "você" fixada quando você está fora do top 50 e atualizações em tempo real: a tabela reage de forma fluida às soluções de outras pessoas sem recarregar.
- Trilhas de aprendizado reconstruídas. Analista / Backend / QA / Data Engineering: cerca de 50 exercícios selecionados por trilha, com vários representantes para cada combinação tema×dificuldade, do aquecimento até EXPERT e com ênfase em problemas de entrevistas reais. Adicionamos uma trilha de Data Engineering e outra dedicada à preparação para entrevistas.
- O botão "Gerar para mim" agora é realmente adaptativo: lê seus últimos 40 envios, escolhe o tópico com a pior precisão recente e calibra a dificuldade ao seu nível: se você empaca, o próximo desce um nível; se emenda acertos, sobe.
- Os novos visitantes começam com o tema "Noite" por padrão (antes era "Tarde"). Se você já escolheu um tema, sua escolha é mantida.
- Exercício "Diga em um único número: quantos clientes ativos temos": a solução de referência exigia clientes com ≥2 pedidos pagos, enquanto o enunciado diz "pelo menos uma vez". Foi corrigido para corresponder ao enunciado.
Os exercícios EXPERT agora concedem 75 power reais por solução (até 281 com bônus), em vez dos 10 do nível EASY. O power total dos usuários que já tinham resolvido um EXPERT foi recalculado retroativamente.
- A tabela de recompensas não tinha uma linha para EXPERT, então o corretor recorria a um valor padrão de 10 e cada exercício EXPERT pagava o mesmo que um EASY. Agora a base de EXPERT é 75 power, sobre a qual se aplicam os mesmos multiplicadores (primeira tentativa ×2, aprovação no Mock Interview ×1.25, solução com Premium ×1.5): até 281 power por exercício EXPERT. Uma migração recalculou
xp_totalem todos os perfis com as regras corrigidas, então quem já tinha resolvido um EXPERT recebe o power que faltava automaticamente.
Fechamos a brecha pela qual um exercício podia ser "resolvido" fixando manualmente a saída de exemplo: em 25 datasets o corretor agora verifica sua consulta contra linhas ocultas diferentes das mostradas no enunciado.
- As soluções continuam sendo executadas contra as mesmas tabelas e colunas de antes, mas as linhas do seed de correção diferem do exemplo visível. Qualquer resposta autêntica baseada em consulta continua passando, enquanto um
SELECT … UNION ALL …fixado manualmente que copiou os literais do exemplo agora é avaliado como "wrong". Estão cobertos 25 datasets do último lote do catálogo (listas, CTE, funções de janela, pivôs, DML, experts).
Corrigimos dois problemas de exercícios reportados por estudantes: o exemplo fora de ordem em "Estudantes por região" e a descrição que tinha se desviado do esquema no exercício de receita líquida.
- Exercício "Estudantes por região" (#357): o exemplo agora segue ordem crescente por
rn(Jack / Kim / Lars na primeira linha), e a solução de referência inclui umORDER BY rnexplícito para produzir a mesma ordem. - Exercício "Encontre os usuários com receita líquida de no mínimo 100" (#783): o título e a descrição agora correspondem aos dados reais: são usuários e eventos
purchase/refund, não produtos esale/refund, e o limite é 100, não 1000.
Seis exercícios avançados agora incluem uma tabela pré-carregada: as soluções não começam mais com um preâmbulo CREATE TABLE.
- Seis exercícios de nível Difícil e Expert (UPSERT por chave única e composta, CTE com
RETURNING,INSERT … RETURNINGem lote, fila comSKIP LOCKED, expansão de array comUNNEST) se alinham ao restante do catálogo avançado: a tabela é criada e preenchida no dataset, e a solução contém apenas a operação avaliada mais umSELECTfinal para a correção.
- A descrição do exercício "Contador de visualizações" não se desvia mais da resposta esperada: o texto e a correção agora falam da mesma tabela
counters(id, count)e de cinco execuções sobre a mesma linha.
Os exercícios DDL não mostram mais tabelas alheias no painel lateral de esquema.
- Em 10 exercícios com
CREATE TABLE(de fáceis até nível Expert) o painel lateral de esquema mostrava tabelas de um dataset alheio; por exemplo, um exercício sobre artigos mostravaorders. Agora o painel aparece vazio, como deve ser quando um exercício pede para construir a tabela do zero.
115 exercícios novos, um seletor de tema com três modos (Dia / Tarde / Noite) e uma paleta escura mais suave.
- O catálogo cresceu em 115 exercícios: 20 fáceis, 35 médios, 45 difíceis e 15 de nível Expert: subconsultas, CTEs, funções de janela, DML/DDL, MERGE, otimização de consultas, transações, JSONB, recursão e
LATERAL. - Novo nível de dificuldade "Expert" com uma etiqueta violeta e seu próprio filtro no catálogo.
- Seletor de tema com três modos: Dia (claro), Tarde (escuro suave) e Noite (profundo): escolha conforme a luz do ambiente para não cansar a vista.
- O tema escuro foi suavizado: o fundo passou a um cinza azulado no estilo Linear (
#1B1B1F) em vez do near-black anterior, e o texto principal foi para zinc-300, com menos halo em sessões longas. - No modo "Noite", o painel do editor SQL fica três tons mais escuro que o fundo, com uma leve inclinação para o preto puro: lê-se como um painel rebaixado dentro da mesma paleta.
- O resumo de tópico dentro do exercício agora leva em conta a dificuldade: nos níveis Difícil e Expert ele oculta os básicos
SELECT/WHERE/ORDER BY/LIMITe mostra em seu lugar padrões avançados:STRING_AGG,ARRAY_AGG,GROUPING SETS,LATERAL, JSONB, índices parciais, etc. - As pílulas ativas do filtro de dificuldade passaram a um preenchimento suave com a cor da marca em vez do preto sólido: não destoam mais do estilo do tema claro.
- Rótulos de dificuldade na versão russa: «Лёгкое» → «Лёгкий», «Среднее» → «Средний», «Сложное» → «Сложный».
24 novos artigos do blog para iniciantes.
- A cobertura de temas foi ampliada: DML (
INSERT/UPDATE/DELETE), DDL (CREATE TABLE/ALTER TABLE), agregações,DISTINCT, tratamento de NULL (CASE WHEN/COALESCE/NULLIF), CTEs e subconsultas, funções de janela, strings e datas.
- Resumo do treinador: cada item leva agora ao seu próprio artigo. Antes os quatro itens de funções de janela apontavam para uma visão geral comum; agora
ROW_NUMBER,RANK/DENSE_RANK,PARTITION BYeLAG/LEADtêm cada um o seu.
- Exercício #114 "Quantas alas de cardiologia": a coluna esperada foi renomeada de
countparawards_countpara não se confundir visualmente com a palavra reservada.
Fechamos a brecha de respostas ajustadas manualmente: os exercícios agora são corrigidos contra um dataset oculto.
- O corretor agora pode avaliar um exercício contra um conjunto de dados oculto. A consulta de referência é recalculada sobre esses mesmos dados, então as soluções corretas continuam passando, enquanto os truques com constantes copiadas do exemplo não.
- O exercício "O membro mais antigo do clube" não aceita mais um
LIMITfixado manualmente para coincidir com o exemplo visível: só passa uma consulta que expresse "todas as linhas com a data de nascimento mínima".
Ajustes nos cartões de preços e correções no botão "Entre e assine" logo após a v2.2.0.
- O preço e o botão dos cartões Free e Premium agora ficam alinhados na mesma linha.
- Encurtamos as notas abaixo do preço para Crypto e Visa/MC: só ficou o nome do meio de pagamento.
- O botão "Entre e assine" volta a ser clicável para usuários sem sessão iniciada.
Adicionamos pagamentos com criptomoedas e com cartões internacionais Visa/Mastercard, além de reforçar as defesas antibot no fluxo de autenticação.
- Pagamentos com criptomoedas via NowPayments: BTC, ETH, USDT e outras. $21 trimestral / $28 semestral.
- Cartão internacional Visa/Mastercard via Paddle com cálculo automático de IVA / imposto sobre vendas. $21 / $28.
- Seletor de método de pagamento no cartão Premium: cartão russo, Crypto, Visa/MC. A moeda muda conforme o método escolhido.
- Cloudflare Turnstile no login e no cadastro: invisível para pessoas, bloqueia bots.
- A conta é bloqueada por 15 min após 5 senhas incorretas (depois de forma exponencial até 24 h), com uma contagem regressiva explícita.
- Os erros de login e cadastro agora são legíveis: acabaram os crus "Forbidden" e "Invalid credentials".
- Limite de envios: 5/min e 30/15 min por usuário. Não afeta as sessões reais de resolução.
- Após entrar, você volta para a página de onde clicou em "Entrar", inclusive com OAuth (Google, GitHub, Yandex).
- Sair da sessão a partir de uma página pública não leva mais você para a página inicial.
Terminamos de corrigir o salvamento de Telegram, GitHub e LinkedIn na página de perfil. O release anterior corrigiu o normalizador de nome de usuário no backend, mas o componente do frontend interrompia o onBlur e a requisição PATCH nunca chegava a ser enviada. O campo aceitava o texto visualmente, o servidor ficava vazio e, após recarregar, o campo aparecia em branco. Agora a comparação ao perder o foco usa o valor capturado no momento do foco, não o texto em andamento.
- Os campos "Telegram", "GitHub" e "LinkedIn" do perfil voltam a salvar o valor digitado. Por causa de um useEffect que recalculava o "último valor salvo" a cada tecla pressionada, a verificação onBlur sempre comparava o texto atual consigo mesmo e pulava a requisição PATCH. Agora comparamos com um snapshot capturado ao receber o foco.
Corrigimos o salvamento dos nomes de usuário de Telegram, GitHub e LinkedIn na página de perfil: ao digitar o formato do placeholder como t.me/username, ele era cortado para lixo como t.me. Agora qualquer entrada — o nome puro, @handle, t.me/handle ou https://t.me/handle — é normalizada para um nome de usuário limpo.
- Os campos "Telegram", "GitHub" e "LinkedIn" do perfil salvam corretamente o nome de usuário mesmo que o endereço seja digitado sem
https://. Antest.me/durovviravat.meegithub.com/octocatviravagithub.com, porque o normalizador exigia um esquemahttp(s)://e, sem ele, cortava o valor na primeira barra.
Removemos o banner de upsell de premium que aparecia por engano no painel de resultados: ele era acionado em exercícios gratuitos e até para usuários premium. Era interface morta desde o início: os exercícios premium são bloqueados ao serem abertos, então o editor nunca chega a vê-los.
- No modal "Correto!" a pílula "+50% Power per solve — go Premium" agora tem um espaçamento horizontal adequado: a coroa e a seta não encostam mais nas bordas.
- O AI Mentor recebe agora um contexto compacto do exercício: o dialeto SQL ativo, as tabelas, os relacionamentos, as colunas esperadas, a resposta de exemplo e o diff da última correção. O SQL de referência só é usado como contexto privado para explicar erros e para os níveis de dica mais avançados.
- O banner de upsell "Exercícios de entrevista — Premium" não aparece mais no painel de feedback. Antes, qualquer erro do servidor que contivesse a palavra
premiumem seu rastreamento (por exemplo, uma colunasolved_as_premiumausente logo após uma migração) acionava uma correspondência de substring e exibia o upsell, mesmo em exercícios gratuitos e para usuários premium.
O Premium agora concede +50% de Power por cada exercício resolvido: o impulso fica ligado ao exercício para sempre, mesmo depois que a assinatura expirar. O AI Mentor não entrega mais a solução na primeira dica e agora escala a ajuda exercício por exercício. Também removemos o comentário inicial -- Click ▶ Run do editor do primeiro exercício.
- A assinatura Premium concede um multiplicador de Power ×1.5 em cada exercício resolvido. O impulso fica fixado no momento da resolução, então permanece no seu total mesmo que a assinatura expire mais tarde.
- O modal "Correto!" mostra agora um aviso de upgrade para os usuários gratuitos, logo abaixo do chip +Power: "Ganhe +50% de Power por exercício — assine o Premium", com link para /pricing.
- O AI Mentor agora escala as dicas por exercício. A primeira solicitação dá apenas uma orientação, sem nomear operadores; as solicitações 2 a 4 acrescentam o conceito e a categoria; a partir da quinta o mentor pode nomear
LIKE/WHERE/GROUP BYdiretamente. O contador é reiniciado a cada 24 horas. - As explicações de respostas incorretas seguem agora os mesmos níveis das dicas comuns: não revelam mais operadores específicos no primeiro envio com erro.
- Fechamos os pontos pendentes da auditoria de exercícios SQL: corrigimos a referência de "Vencedores do torneio", alinhamos as pré-visualizações de TIMESTAMP em vários exercícios e restauramos a variante de PostgreSQL em um exercício de IA.
- Removemos o comentário inicial
-- Click ▶ Run — see what's in this tabledo editor do primeiro exercício. Os exercícios que você abre agora começam com o editor vazio.
Redesenhamos os filtros do catálogo de exercícios: o estado passou a ser um controle segmentado de três posições (Todos / Sem resolver / Resolvidos) com "Sem resolver" por padrão, adicionamos um filtro de dialeto, os chips de tema e empresa agora mostram a contagem atual de exercícios e os filtros ativos aparecem como pílulas removíveis com um botão "Redefinir tudo".
- Filtro de dialeto no catálogo: All / PG / MySQL, um segmento próprio ao lado do controle de estado.
- Os chips de tema e empresa agora mostram quantos exercícios correspondem: "Janelas (43)", "Tinkoff (5)". Os chips com zero exercícios ficam esmaecidos.
- Linha de pílulas de filtros ativos: cada filtro aplicado (busca, dificuldade, estado, dialeto, favoritos, tema, etiqueta, empresa, região) aparece como uma pílula com ×; o botão "Redefinir tudo" volta tudo aos valores padrão.
- O filtro de estado do exercício agora é um controle segmentado de três posições (Todos / Sem resolver / Resolvidos), com "Sem resolver" por padrão. Substitui o único botão "Ocultar resolvidos".
- O controle de ordenação foi movido para a barra superior: antes ficava enterrado embaixo e escondido atrás da rolagem.
- O botão "Favoritos" foi movido para a barra superior de filtros: agora fica ao lado dos outros botões binários.
- O selo "Filtros N" não mostra mais "1" ao entrar pela primeira vez: a visualização padrão "Sem resolver" não conta como um filtro aplicado.
Auditoria de todo o catálogo: o corretor não rejeita mais respostas corretas por causa da serialização de DATE versus TIMESTAMP, as pré-visualizações de exemplo de mais de 60 exercícios agora correspondem ao que a solução de referência realmente retorna, e 5 exercícios que usam CURRENT_DATE / NOW() ficam fixados a uma referência constante para que as pré-visualizações parem de mudar dia a dia. Além disso, uma correção de descrição no exercício de transações mensais a partir de um reporte de usuário.
- Corretor: adicionamos a normalização de data como timestamp (
2024-01-01T00:00:00.000Z↔2024-01-01); as respostas corretas deixam de receber "a contagem coincide, mas o conteúdo difere" por causa do formato do tipo retornado. - Exercício "Transações e estornos mensais": a descrição agora esclarece que um estorno pertence ao mês da transação original, não à data do reembolso; a pré-visualização mostra o primeiro dia do mês em vez de timestamps ISO deslocados pelo fuso horário.
- Regeneramos as pré-visualizações de exemplo de mais de 60 exercícios: formato numérico (
100→100.00), fuso horário (+03→+00), DATE como TIMESTAMP, INTERVAL como objeto; a pré-visualização agora corresponde ao que o executor real retorna. - Cinco exercícios que usam
CURRENT_DATE/NOW()/CURRENT_TIMESTAMPem seu seed (#170, #601, #602, #668, #693) ficam agora fixados em2026-05-05 12:00:00 UTC. As pré-visualizações param de mudar.
Redesenhamos o blog: busca, navegação por 10 seções e os primeiros 7 tutoriais para iniciantes. Os nomes de comandos no resumo do exercício agora são links que levam aos artigos. A página de releases ganhou uma árvore de versões com destaque ao rolar.
- Blog: busca por títulos, conteúdo e etiquetas, mais uma barra lateral esquerda com seções. A seção ativa fica destacada ao rolar.
- Blog: os 7 primeiros tutoriais para iniciantes:
SELECT … FROM,WHERE,ORDER BY,LIMIT,INNER JOIN,LEFT JOINe aliases. - Resumo de tópico dentro do exercício: os nomes de comandos agora são links azuis para o tutorial do blog correspondente e abrem em uma nova aba.
- Página de releases: árvore de versões à esquerda agrupada por
major.minor; ao clicar, rola até a versão e atualiza a âncora do hash. - Botão "copiar SQL" em cada linha da aba "Envios".
- Concordância de plural em russo em todas as páginas: "221 задача", "2 задачи", "5 задач" em vez do antigo "221 задач".
- O resumo de tópico dentro do exercício não treme mais ao ser expandido: agora o espaço da barra de rolagem fica reservado.
- As tabelas Markdown dos artigos do blog agora são exibidas como tabelas HTML em vez de uma única linha de texto simples.
Revisão de qualidade de todo o catálogo: 23 exercícios que não podiam ser executados reparados, 66 descrições em inglês reescritas e descrições e pré-visualizações de exemplo alinhadas em mais algumas dezenas. Além disso, uma correção reportada por um usuário.
- As pré-visualizações de exemplo de mais de 50 exercícios agora correspondem ao que a solução de referência retorna.
- Unificamos as etiquetas de empresa duplicadas nos chips de filtro de exercícios.
- Reparamos 23 exercícios (pharma-*, loyal-*, hotel-*, qa-*) que não podiam ser resolvidos por uma inconsistência entre o esquema e o seed.
- Reescrevemos as descrições em inglês de 66 exercícios lc-* / lc2-* que antes só tinham um texto provisório ou um fragmento.
- O exercício "Salas reservadas em 2 de setembro de 2019" não aceita mais a resposta incorreta.
- Dez exercícios em que a descrição não concordava com a solução de referência agora estão consistentes.
- Sete exercícios da Tochka tinham o enunciado de outro exercício: nós os reescrevemos.
69 exercícios novos extraídos de entrevistas de emprego reais do mercado russo (Yandex, Tinkoff, Sber, VTB, Alfa, VK, Ozon, Avito, Magnit, Samokat e outras 23 empresas), construídos em torno do universo mais amplo de tipos do PostgreSQL: UUID, JSONB, ENUM, INTERVAL, TSTZRANGE, INET, NUMERIC e POINT. Além disso, correções importantes a partir de reportes de usuários e um indicador de ponto vermelho "Novidades" na barra lateral.
- 69 exercícios novos retirados de entrevistas reais em empresas russas. 33 empregadores: 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 e Yandex Practicum. Todos marcados como Interview e acessíveis com Premium.
- Tipos de dados ricos nos esquemas dos exercícios. Antes a maioria dos exercícios tinha colunas
INTeVARCHAR(100): ótimo para exemplos de manual, mas longe de produção. Os exercícios novos introduzemUUIDpara as chaves primárias de clientes e pedidos,NUMERIC(15,2)para dinheiro eNUMERIC(12,4)para taxas de câmbio,TIMESTAMPTZpara eventos,INTERVALpara durações de chamadas e sessões,TSTZRANGE/DATERANGE/NUMRANGEpara históricos SCD2 e janelas de validade,JSONBpara metadados e payloads de eventos,ENUM(com seuCREATE TYPEexplícito) para status e categorias,INETpara os IPs em exercícios antifraude,POINTpara coordenadas GPS,TEXT[]/INTEGER[]para etiquetas e listas de ID. Assim, no treinador você encontra os mesmos tipos que verá em um banco de dados real. - Indicador de ponto vermelho na entrada "Novidades" da barra lateral: aparece quando um release que você ainda não abriu foi publicado. O ponto desaparece após uma visita a
/releases(o indicador fica salvo no localStorage deste navegador). Antes o indicador só existia na barra superior; nos layouts apenas com barra lateral não era possível vê-lo.
- Exibição correta dos tipos novos na tabela de resultados da consulta. Antes as colunas
JSONB,INTERVALePOINTapareciam como "[object Object]" e os arrays (TEXT[],INTEGER[]) eram reduzidos a strings separadas por vírgulas: a estrutura ficava invisível. Agora JSONB e os arrays são exibidos como JSON legível, INTERVAL no formato1d 02:30:00e POINT como(x, y). Os valores booleanos e os UUIDs mantêm sua representação em texto. - O diagrama ER da página do exercício recebeu cores para os tipos novos: UUID violeta, JSONB amarelo, INTERVAL roxo (a mesma família dos demais tipos de data e hora), TSTZRANGE / DATERANGE / NUMRANGE rosa, INET ciano, POINT rosa, os ENUMs personalizados em vermelho. Antes esses tipos caíam no cinza padrão e não se distinguiam dos habituais INT / VARCHAR.
- Os seis exercícios corrigidos acima também receberam um esquema enriquecido no estilo do novo conjunto de entrevistas: chaves primárias
UUID, payloadsJSONB, tiposENUMpara sexo / categorias / status,NUMERIC(15,2)no lugar deINTpara salários e preços, eINTERVALpara as durações. O enunciado foi levemente ajustado para motivar os tipos novos, mas o problema de fundo não muda. Este é o primeiro passo para modernizar os exercícios antigos: haverá mais nos próximos releases.
- Corrigimos vários exercícios antigos reportados por usuários. "Participantes do projeto, parte 2": o diagrama ER mostrava Employee + Department em vez de Project + Employee, embora o esquema subjacente estivesse correto; ajustamos o diagrama ao esquema. "Publicações denunciadas": a descrição não esclarecia que o motivo da denúncia está na coluna
extra; agora esclarece. "Análise de vendas, parte 1": a solução de referência usavaSUM(price)mesmo que o esquema tenha uma colunaquantity, o que gerava confusão; reformulamos comoSUM(quantity * price), mais próximo da receita real. "Trocar o sexo de todos os funcionários": o exercício estava vinculado ao dataset errado (Employee + Department em vez deSalary(id, name, sex, salary)), o que o tornava insolúvel; revinculamos ao dataset canônico. Aplicamos a mesma correção ao mesmo desvio silencioso do ER em "Participantes do projeto, parte 3" e "Publicações denunciadas, parte 2".
Release importante: uma nova navegação com barra lateral esquerda, o rigoroso modo Mock Interview com um bônus de +25% de Power, perfis públicos e amigos, notificações por e-mail, etiquetas de empresa nas cores da marca, filtros adicionais e um bloco de cursos de parceiros. Além disso, uma correção importante de privacidade entre contas e dezenas de melhorias de UX.
- Bloco de cursos de parceiros. Na página de exercícios (em telas largas) aparece uma coluna à direita com uma seleção de cursos relevantes; no celular é um carrossel horizontal acima da lista. Os cartões levam às páginas dos parceiros com etiquetas UTM; para nós, uma forma de manter baixo o preço da assinatura cobrindo os custos de infraestrutura.
- Novo modo Mock Interview: uma simulação rigorosa de uma entrevista real. Qualquer infração (troca de aba, colar texto, sair da tela cheia, perder o foco da janela por mais de 1 segundo) faz a sessão falhar automaticamente. As dicas, o AI Mentor e o resumo ficam ocultos e bloqueados. Durações: 5 / 10 / 15 / 30 / 60 minutos. Plano gratuito: 1 tentativa por dia; Premium: ilimitado. Enquanto uma sessão está ativa, toda a navegação ao redor (barra lateral, "Exercícios", "Melhores soluções", "Próximo exercício", "Sair da trilha", Prev/Next/Random) fica bloqueada: a única saída é o botão explícito "Finalizar" ou fechar a aba (o que marca a sessão como Abandonada automaticamente).
- +25% de Power por cada exercício concluído no modo Mock Interview: o bônus é por exercício e é indicado no relatório posterior à sessão. A classificação incorpora uma coluna informativa "Mock" (o mesmo número aparece no cartão de perfil e em
/u/<username>); não afeta a ordenação por Power. - Perfis públicos em
/u/<username>: você escolhe um nome de usuário curto no perfil, ativa o modo público e qualquer visitante anônimo vê seu ranque, seu Power, sua sequência atual, suas conquistas, o mapa de calor de atividade e os links para GitHub / Telegram / LinkedIn. Sem sessão iniciada nenhum dado privado é exposto. - Amigos: adicione usuários pelo nome público, gerencie as solicitações recebidas e enviadas e veja uma aba de classificação de amigos com o Power, a sequência e os exercícios resolvidos deles.
- Favoritos: cada cartão de exercício agora tem uma estrela; ao clicar, o exercício entra no filtro "Apenas favoritos". A lista fica salva no servidor, vinculada à sua conta, e não se perde ao trocar de navegador.
- Notificações por e-mail (caixas de seleção no perfil). "Salve sua sequência": um lembrete à noite quando sua sequência é ≥ 3 dias e você não resolveu nada hoje. "Resumo semanal": no sábado de manhã, com uma retrospectiva dos exercícios resolvidos na última semana, sua sequência atual e sua categoria mais fraca.
- Os usuários Premium ficam destacados visualmente onde quer que apareçam os avatares: um anel em degradê holográfico (classificação, amigos, perfil, barra lateral, página pública
/u/<username>); nos avatares grandes, uma pequena coroa no canto. Não afeta a ordenação. - Etiquetas de empresa com cores de marca nos cartões de exercícios: amarelo para Yandex / Tinkoff / Beeline, verde para Sberbank / Spotify / OpenAI, azul para VK / Ozon / Google / Meta, vermelho para MTS / Alfa / Tesla, roxo para Stripe / Skypro / Wayfair, laranja para Amazon / Alibaba, etc. Antes todas as etiquetas eram de um mesmo roxo.
- Chips adicionais de cláusulas SQL no filtro "Tema" da página de exercícios: junto às 8 categorias amplas (SELECT, JOIN, subconsultas, janela, agregados, CTE, DML, DDL) agora você pode ativar
GROUP BY,COUNT,HAVING. Combine-os com as categorias para filtrar com mais precisão. - O painel "Esquema do banco de dados" da página do exercício agora pode ser recolhido. O botão ao lado do título do exercício oculta a coluna e libera largura para o editor e a tabela de resultados. O estado recolhido fica salvo por navegador, então no próximo exercício o esquema abre do mesmo jeito.
- 8 exercícios de entrevista novos da Tochka, de EASY a HARD. Cenários de CRM (encontrar clientes com uma solicitação ativa), cálculos de carteira (estrutura, prazo médio ponderado de vencimento, evolução do valor) e consultas sobre títulos com funções de janela. Soluções para PostgreSQL e MySQL.
- Seção "Blog" em
/blog. Tutoriais longos: começamos com uma análise aprofundada das funções de janela. Conteúdo bilíngue, URLs com slug e cartões OG para compartilhar nas redes. Acessível pelo rodapé e pela parte inferior da barra lateral. - Página 404 personalizada. A antiga do Next.js exibia texto preto sobre fundo branco, ilegível no tema escuro. A nova página usa os tokens do tema e fica dentro do contêiner comum, mantendo a navegação à mão.
- Redesenho completo da navegação. Para os usuários conectados dentro do aplicativo, o menu principal foi movido para uma barra lateral esquerda: ali se agrupam Treinador, Progresso, Classificação e as demais seções, com o Power e a sequência abaixo do seu avatar e os seletores de idioma e tema embaixo. A página inicial, a de preços e os fluxos de autenticação mantêm a barra superior fina. As páginas de conteúdo (Novidades / Reportar um bug / Blog) herdam o tipo de menu conforme de onde você veio.
- O anel em degradê do Premium ao redor do avatar agora aparece em todas as abas da classificação: antes o anel só aparecia na aba "De todos os tempos" e sumia em "Semana" e "Mês" porque o backend não enviava o status da assinatura para as classificações periódicas.
- O nome e o avatar que você altera no perfil agora se refletem imediatamente na barra lateral, sem recarregar a página. Antes o cartão de usuário antigo podia permanecer até uma recarga completa.
- Vazamentos de dados entre contas ao trocar de usuário no mesmo navegador. Antes, depois de sair e entrar com outra conta, podiam permanecer: o histórico de chat com o AI Mentor, os rascunhos de SQL do editor, as marcas de "resolvido" dos exercícios, as sessões de mock interview ativas, o contador de geração com IA e o cache de favoritos. Agora, ao sair da sessão e em qualquer login (formulário, OAuth, verificação de e-mail), tudo o que estava ligado ao usuário anterior é apagado.
- O link "Classificação de amigos" do perfil leva agora diretamente à aba "Amigos": antes deixava você na classificação global e era preciso trocar de aba manualmente. A faixa para iniciantes "Comece aqui" não reaparece mais depois de ser dispensada; antes a dispensa era reiniciada a cada saída e login.
- Dezenas de ajustes de layout e interação no celular: um modal de relatório pós-sessão mais compacto, espaçamentos de filtro corretos em telas estreitas, o banner de feedback não se sobrepõe mais ao painel lateral em 1024px e campos de nome e e-mail na página de reporte de bugs para quem envia sem sessão iniciada.
Correção urgente de UX do editor em telas estreitas: a janela "Configurações do editor" não é mais cortada pelo painel de código nem ultrapassa a borda da tela no celular. O mesmo botão de engrenagem do desktop agora aparece também na barra de ferramentas móvel, e o ajuste de tamanho de fonte enfim se aplica ao editor móvel.
- A janela "Configurações do editor" podia ficar cortada pelas bordas da página e não tinha rolagem interna: em um notebook estreito, e ainda mais em um celular, metade das configurações simplesmente não aparecia. Agora a janela é exibida sobre toda a página (por meio de um portal), ajusta-se automaticamente à área visível e adiciona uma barra de rolagem interna quando seu conteúdo ultrapassa a altura da tela. O cabeçalho com o título e o botão de fechar permanece fixo ao rolar.
- Na visualização móvel do editor (≤1024px) a barra de ferramentas não tinha a engrenagem de configurações do editor: "Tamanho da fonte" só podia ser aberto pelo desktop. Agora a engrenagem fica ao lado de PG/MySQL e Format, e o ajuste de tamanho de fonte realmente altera o tamanho do campo de texto móvel.
Correção urgente a partir de um reporte de bug: o exercício #240 ("Bônus da equipe") exibia o esquema errado: aparecia Employee + Department em vez do real Employee + Bonus, o que tornava o enunciado ilegível.
- Exercício #240 "Bônus da equipe": o visualizador de esquema exibia tabelas desatualizadas
Employee + Department(com os camposdepartment_id,manager_id) e uma abaDepartmentvazia. O ambiente de testes e a solução de referência funcionavam corretamente desde o início: o erro estava só nos metadados do visualizador. Agora o esquema mostra as tabelas reaisEmployee + Bonuscom o relacionamentoBonus.empId → Employee.empId.
Enriquecemos os datasets de 268 dos 339 exercícios: tabelas de origem mais completas, linhas mais significativas no resultado esperado e exercícios que não parecem mais quebrados.
- Enriquecimento em massa de datasets: 268 dos 339 exercícios receberam dados de seed mais completos, normalmente entre 6 e 12 linhas nas tabelas principais em vez de 2 a 4, com variedade nos eixos de filtro/JOIN/GROUP BY que a solução de referência exercita. Foram modificados 137 datasets únicos. As soluções de referência e os esquemas NÃO mudaram. O progresso dos usuários é preservado: os exercícios já resolvidos continuam resolvidos, e o Power e as conquistas não são recalculados.
- Cada exercício enriquecido foi validado: a solução de referência foi executada contra o novo seed por meio do executor, e o sample_output foi regenerado a partir do resultado real.
- De passagem, uma correção do exercício #38 (
well-paid-employees): era uma correção independente da v1.2.4 e agora faz parte da revisão geral.
Correção urgente a partir de um reporte de bug: o painel "Exemplo de resposta esperada" agora esclarece que o número de linhas não precisa corresponder às tabelas do esquema.
- Acima do painel "Exemplo de resposta esperada" adicionamos uma nota: "é assim que se parece uma resposta correta; tem seu próprio número de linhas e não precisa corresponder às tabelas do esquema". Antes os usuários contavam as linhas de uma das tabelas do esquema e achavam que o exercício estava quebrado se o número não coincidisse com o do exemplo.
Correção urgente a partir de um reporte de bug: o exercício #38 "Salário maior que o do chefe" agora roda sobre um dataset adequado com três casos reais. Além disso, um pequeno ponto laranja em "Novidades?" quando um release novo é publicado.
- No item "Novidades?" da barra de navegação aparece um pequeno ponto laranja quando um release novo é publicado. Uma visita a
/releaseso apaga até o próximo release.
- Exercício #38 (
well-paid-employees): o dataset era escasso demais, apenas 6 funcionários e um único caso de "subordinado ganha mais que o chefe", o que dava a impressão de que os dados estavam errados. Nós o ampliamos para 9 funcionários em dois departamentos com três casos claros (Eve > Alice, Frank > Dave, Henry > Bob).
Nova página "Reportar um bug" com anexos de capturas de tela, um grupo de navegação secundário e uma faixa "Comece aqui" mais compacta no celular.
- Nova página "Reportar um bug" na barra de navegação: um formulário com assunto, descrição e até 5 capturas de tela ou clipes curtos (com arrastar e soltar). O reporte chega ao nosso e-mail para que possamos analisá-lo rápido.
- A barra de navegação ganha um grupo secundário — "Novidades?" e "Reportar um bug" — separado das abas principais por uma fina linha vertical.
- No celular, a faixa para iniciantes "Comece aqui" é mais compacta: título mais curto, descrição oculta e cartões mais estreitos. Deixa mais espaço para a própria lista de exercícios.
- A faixa para iniciantes "Comece aqui" não pisca mais por uma fração de segundo ao abrir a página de exercícios: agora é exibida só depois que
/progressresponde. - O resumo das notas de release (a linha superior) agora exibe corretamente as crases: antes mostrava o literal "
?lang=" em vez de uma pílula de código estilizada. - Removemos a barra de rolagem vertical fantasma da página "Trilhas de aprendizado":
min-h-screenjunto com a barra de navegação forçava cerca de 60px de altura a mais mesmo quando o conteúdo cabia.
Ajustes de UX em todo o treinador, mais um parâmetro de URL ?lang= para anúncios e links diretos a um idioma específico.
- Você pode abrir o site diretamente em um idioma específico com
?lang=enou?lang=runa URL:https://sql.coderang.dev/?lang=en. Útil para anúncios e para compartilhar links a um idioma específico; a escolha fica salva por um ano.
- Quando as dicas de IA do dia se esgotam, o botão "Explicar" do banner vira "Resumo" e abre a referência do tópico.
- A estrela de favoritos agora aparece no celular e fica levemente transparente no desktop, em vez de ficar invisível até passar o cursor.
- A descrição do exercício não dá mais saltos ao expandir o resumo. A estrela fica mais brilhante ao passar o cursor.
- Nos exercícios DDL, o painel de esquema mostra "não há tabelas iniciais; você precisa criá-las" em vez de um canvas vazio.
- O botão de IA agora realmente pulsa apenas em caso de erro (antes a classe de animação não estava definida no CSS).
- O Power e a sequência da barra de navegação são carregados do localStorage antes da requisição ao servidor: acabou o piscar de "0 ⚡".
- O contador de geração com IA não é mais reiniciado para 0 após o redirecionamento ao exercício gerado.
- Detalhes no celular: selos de dificuldade com a mesma largura (a estrela fica alinhada), o texto da barra de abas inferior cabe, animação suave do contador diário, tooltip no ícone de sequência e regras de plural em russo.
- Os nomes das empresas russas (Сбербанк, Яндекс, Авито…) agora aparecem em transliteração latina (Sberbank, Yandex, Avito) na interface em inglês; em russo continuam em cirílico como antes.
- Os nomes das entradas do resumo (Aliases, Subconsulta escalar, etc.) agora são traduzidos corretamente ao trocar de idioma.
- A classificação semanal e mensal agora aplica o bônus de primeira tentativa ×2 e ignora os reenvios, igual ao cálculo do Power total. Antes a visualização por período mostrava aproximadamente metade do total: era um erro no cálculo, não nos dados.
- Removemos uma aba "Solutions" morta do painel esquerdo: nenhum botão a abria, mas ela carregava dados em paralelo com "Top solutions".
- As crases nas descrições não deixam mais um espaço antes da pontuação ("
Action."). - Os estados vazios do painel de resultados ("Aqui aparecerá o resultado…") agora são traduzidos corretamente para o inglês.
Ajustes nos exercícios de modificação de dados e na renderização geral das descrições.
- Aviso para os exercícios DDL/DML: os exercícios com UPDATE/INSERT/DELETE e CREATE/ALTER/DROP agora mostram uma nota breve "não é preciso um SELECT no final"; acabou ter que adivinhar o que retornar.
- O resumo de tópico agora leva em conta o tipo de exercício: nos exercícios DML não mostra SELECT/ORDER BY/LIMIT (que aqui não são usados) e nos DDL mostra apenas os comandos de modificação de esquema.
- Os trechos entre crases nas descrições dos exercícios (\
id = 4\, \users.email\) agora aparecem como pílulas de código com cor de destaque em vez de texto puro: as descrições são lidas exatamente como os autores as escrevem. - Os blocos de código do resumo agora têm uma barra de destaque à esquerda e uma borda sutil: parecem trechos de código de verdade e não manchas cinzas.
Boas-vindas para os novatos: uma faixa "Comece aqui", SQL inicial no seu primeiro exercício e um resumo de tópico dentro de cada exercício. As dicas diante de respostas incorretas agora são específicas e não consomem sua cota de IA.
- Faixa "Comece aqui" no topo da página de exercícios: 8 exercícios simples de SELECT para quem está começando. Aparece até você resolver algo; rola arrastando, com um cursor de mão.
- SQL inicial no editor. O primeiro exercício que você abre preenche o editor com
SELECT * FROM <first_table> LIMIT 5;para você apertar ▶ na hora e ver como são os dados. - Resumo de tópico. Abaixo da descrição do exercício aparece um bloco recolhível com os comandos SQL relevantes, sua sintaxe e uma breve explicação, adaptado a cada tema: SELECT, JOIN, agregados, subconsultas, funções de janela, CTE, DML, DDL.
- O banner vermelho de resposta incorreta agora é específico: indica as colunas a mais ou a menos, as diferenças por linhas, os problemas de ordenação e os erros de SQL mais comuns. Funciona localmente, sem consumir requisições de IA.
Autocompletar ciente dos aliases no editor SQL e grandes melhorias no layout para celular.
- Página de releases: o histórico de atualizações já pode ser visto em /releases.
- Autocompletar ciente dos aliases. Depois de
<alias>.as sugestões se limitam às colunas daquela única tabela. Os próprios aliases são autocompletados com Tab. - O ponto
.virou um caractere de ativação: as sugestões aparecem automaticamente depois dele, sem Ctrl+Space.
- O menu no celular se sobrepõe ao conteúdo em vez de empurrar a página para baixo. Fecha ao tocar fora.
- Mais de 300 descrições de exercícios reescritas: foi adicionado contexto de negócio, listadas as colunas de saída e indicados de forma explícita a ordenação e o arredondamento.
- A descrição do exercício no celular agora rola corretamente quando o texto é longo. Antes ela travava e impedia chegar às abas de baixo.
- A barra de abas inferior do treinador fica sempre visível em qualquer navegador móvel (Yandex Browser, MIUI, Samsung Internet). Antes ela ficava cortada abaixo da área visível.
- O menu móvel agora é totalmente opaco. Antes 5% do conteúdo de fundo ficava transparente nos navegadores sem suporte a backdrop-filter.
- Em telas estreitas (320px ou menos), o menu suspenso de ordenação de exercícios não ultrapassa mais a borda direita.
- Antigo erro de autocompletar: ao digitar
t.edepois deFROM employee t, era inseridot.employee.salary(SQL inválido). Agora o alias é respeitado.
Primeira versão estável do SQL Arena.
- 259 exercícios de SQL selecionados em 6 categorias: SELECT, JOIN, agregação, subconsultas, funções de janela e DML.
- 96 exercícios de entrevista de grandes empresas de tecnologia (Google, Meta, Amazon, Stripe, etc.).
- Suporte a dois dialetos de SQL: PostgreSQL e MySQL, com troca instantânea.
- Geração de exercícios com IA: exercícios únicos adaptados ao seu nível.
- AI Mentor: dicas contextuais sem revelar a resposta.
- 3 trilhas de aprendizado: percursos estruturados do básico ao SQL avançado.
- Execução de SQL em tempo real em um ambiente isolado com correção do resultado (diferenças de colunas, linhas e ordem).
- Autenticação OAuth com GitHub, Google e Yandex, além de cadastro com e-mail e senha.
- Classificação por XP (Power), perfis de usuário, conquistas e temas claro e escuro.
- Assinatura Premium com integração do YooKassa e limite de requisições contra bots.
- Diagramas ER interativos dos esquemas e editor Monaco com realce e formatação de SQL.
- Interface bilíngue: russo e inglês.