1
resposta

Rsultado diferente

Pessoal, o meu resultado veios apenas 2 registros:
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Adriano! Tudo bem?

Pode ficar tranquilo, o seu código está perfeitamente correto! A lógica que você construiu usando as CTEs e o CROSS JOIN é exatamente a ideal para resolver esse problema de comparação com a média.

O motivo de você estar vendo um resultado diferente do vídeo do instrutor não é um erro no seu SQL, mas sim a passagem do tempo.

O Efeito do current_date()

  • A Data da Gravação: O curso foi gravado no passado. Quando o instrutor rodou o código, a função current_date() retornou a data daquele ano (provavelmente 2023 ou 2024). Hoje, estamos em maio de 2026.
  • A Mudança das Idades: Como a função TIMESTAMPDIFF(YEAR, ...) calcula a idade baseada na data de hoje, todos os clientes da tabela_clientes envelheceram desde a gravação do curso.
  • A Dança da Média: Como a idade é um número inteiro (muda exatamente no dia do aniversário), dependendo do dia e mês de hoje, alguns clientes já fizeram aniversário este ano e outros não. Esse envelhecimento "desigual" altera o valor exato da media_idade e muda as posições de quem está um pouco abaixo ou um pouco acima da linha de corte, resultando em uma quantidade diferente de registros.

Como testar o resultado do instrutor

Se você quiser visualizar exatamente a mesma tabela que apareceu na aula, você precisa fazer uma pequena "viagem no tempo" no seu código. Basta substituir a função current_date() por uma data fixa (uma string com a data aproximada da gravação).

Por exemplo:

SELECT id_cliente, Nome, TIMESTAMPDIFF(YEAR, DataNascimento, '2023-01-01') as Idade

De toda forma, para o seu aprendizado, o que importa é a estrutura da consulta. O seu domínio sobre o uso do WITH para separar as lógicas e depois cruzá-las no SELECT final está excelente. Parabéns pela prática!