1
resposta

[Dúvida] Duvida nas aspas simples

Por que quando eu uso aspas simples no Ano/mes a conmsulta retorna uma unica linha com valor aleatorio?

select strftime('%Y/%m', data_venda) as 'Ano/Mes', count(*) as qtd_vendas
from vendas
group by 'Ano/Mes'
order by 'Ano/Mes' ;

Ano/Mes qtd_vendas
2021/05 50000

1 resposta

Ei, Sávio! Tudo bem?

No SQLite, as aspas são bem intencionais; elas dizem ao banco de dados exatamente o que ele deve procurar.

  • Aspas Simples ('Texto'): servem para valores. Quando você usa 'Ano/Mes', o SQLite entende que você está falando de uma palavra qualquer (uma string literal), e não da sua coluna. Por isso, ele agrupa tudo em uma linha só, como se todos os registros tivessem o mesmo "nome".

  • Aspas Duplas ("Nome"): servem para identificadores. Elas avisam ao SQL: "Ei, estou me referindo ao nome daquela coluna (ou alias) que criei ali em cima!".

Em resumo, para que o GROUP BY e o ORDER BY funcionem do jeito certo com nomes de colunas que possuem espaços ou barras, o padrão é usar as aspas duplas. Assim, o banco entende que deve separar as vendas mês a mês, e não tratar tudo como uma frase estática.

Espero ter ajudado, sempre que surgir dúvidas compartilhe no fórum.

Até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado