Qual o motivo de estar dando resultados diferentes ao trocar o tipo de aspa em Ano/Mes?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Qual o motivo de estar dando resultados diferentes ao trocar o tipo de aspa em Ano/Mes?
Olá, William! Tudo bem?
O comportamento que você está observando no SQLiteOnline tem a ver com a forma como o banco de dados interpreta aspas simples e aspas duplas. Essa diferença aparentemente pequena muda completamente a lógica de agrupamento e ordenação da sua consulta, e entender esse detalhe vai te ajudar muito no dia a dia com SQL.
Então abaixo deixo as diferenças:
1. Com Aspas Simples ('Ano/Mes')
No padrão SQL, aspas simples são usadas exclusivamente para strings, ou seja, textos literais.
Ao utilizar 'Ano/Mes' no GROUP BY e no ORDER BY, o SQLite não entende que você está se referindo à coluna criada no SELECT. Ele interpreta que você quer agrupar e ordenar por um texto fixo, a palavra "Ano/Mes".
O comportamento: agrupar por um texto fixo faz com que o banco ignore o ano real da venda (2020, 2021, 2022) na hora de juntar os registros. Ele acaba agrupando apenas por Nome_Fornecedor, somando os dados de todos os anos como se fossem uma única coisa.
O resultado: os valores de Qtd_Vendas ficam muito mais altos (por exemplo, AstroSupply com 4131) porque estão somando o acumulado de vários anos. Na exibição da tabela, o SQLite escolhe um dos anos de forma arbitrária para mostrar na coluna.
2. Com Aspas Duplas ("Ano/Mes")
No padrão SQL, aspas duplas são usadas para identificadores, como nomes de tabelas ou nomes de colunas. Ao mudar para "Ano/Mes", o SQLite finalmente entende que você está fazendo referência ao alias da coluna definida na linha 7.
O comportamento: o banco agora agrupa os dados combinando o Nome_Fornecedor e o valor real retornado por strftime('%Y/%m', v.data_venda).
O resultado: os dados são separados corretamente por ano e mês. Como a consulta possui um filtro para o mês 11, a listagem mostra as vendas específicas de novembro de 2022 separadas de novembro de 2021. Por isso, os números diminuem e exibem o valor real de cada período.
Deu para entender a diferença?