3
respostas

Verificação Having com alias

 select *, count(*) as numero_de_vendas
 from notas_fiscais
 where year(DATA_VENDA) = 2016
 group by cpf
 having numero_de_vendas >= 2000
 order by numero_de_vendas desc;

meu código ficou assim, achei mais intuitivo fazer o having usando o alias da condição desejada.
3 respostas

Olá, Gabriel, tudo bem?

Testei o seu código no MySQL Workbench e foi me gerado o erro 1064 que corresponde a um erro de sintaxe. Isso porque o SQL não permite o uso de aliases definidos no SELECT dentro do HAVING. Para resolver isso, você pode repetir a expressão que define o alias diretamente no HAVING.

O código ficaria assim:

select cpf, count(*) as numero_de_vendas
from notas_fiscais
where year(DATA_VENDA) = 2016
group by cpf
having count(*) >= 2000
order by numero_de_vendas desc;

Dessa forma, você está utilizando a mesma expressão count(*) tanto no SELECT quanto no HAVING, garantindo que a condição seja aplicada corretamente.

Gabriel, continue com essa dedicação explorando soluções que vão além do curso. A prática do conteúdo é algo que nos ajuda a internalizar o conhecimento adquirido e nesse processo caso tenha restado alguma dúvida em específico, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Estranho, o código que mandei funciona aqui

(Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Oi Gabriel

Perdão! Na verdade, eu obtive o erro 1055, pois o meu MySQL estava com o "only_full_group_by" ativado. Ele determina que todas as colunas contidas no SELECT também estejam presentes na cláusula GROUP BY.

Deixo abaixo o comando para caso algum aluno se depare com o mesmo problema e queira solucioná-lo.

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

Executei a sua query e obtive o resultado esperado. Portanto, ela está correta.

Forte abraço e desculpe o transtorno causado.

Bons estudos!