1
resposta

[Dúvida] DÚVIDA SOBRE O CAST

A minha solução que funcionou para o desavio foi essa:

SELECT CONCAT('O cliente ' , NOME , ' faturou R$ ', FLOOR(SUM(QUANTIDADE * PRECO)), ' no ano de 2016') AS RESULTADO
FROM tabela_de_clientes TBC
INNER JOIN notas_fiscais NF ON NF.CPF = TBC.CPF
INNER JOIN itens_notas_fiscais INF ON INF.NUMERO = NF.NUMERO
WHERE YEAR(DATA_VENDA) = 2016
GROUP BY NOME, YEAR(DATA_VENDA);

Porém tentei fazer dessa formar usando o campo DATA_VENDA no CONCAT e não funcionou:

SELECT CONCAT('O cliente ' , NOME , ' faturou R$ ', FLOOR(SUM(QUANTIDADE * PRECO)), ' no ano de ', YEAR(DATA_VENDA)) AS RESULTADO
FROM tabela_de_clientes TBC
INNER JOIN notas_fiscais NF ON NF.CPF = TBC.CPF
INNER JOIN itens_notas_fiscais INF ON INF.NUMERO = NF.NUMERO
WHERE YEAR(DATA_VENDA) = 2016
GROUP BY NOME, YEAR(DATA_VENDA);

Imaginei que estaria relacionado com o fato dos campos no CONCAT() possuirem tipos diferentes, no entanto tentei usar o CAST() como sugerido na resolução e ainda assim não funcionou.

1 resposta

Oii, Daniela! Tudo bem?

Parabéns por ter encontrado uma solução para o exercício! E agradeço por compartilhá-lo conosco. Continue assim!

O CAST quando utilizado é para converter um tipo de dado em outro, mas pode não ser necessário nesse caso específico.

Uma possível solução para resolver o erro é:

  • Executar o script abaixo no MySQL Workbench:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
  • Localize a opção Database, que se encontra no menu de navegação, e a selecione;
  • Clique em Connect to Database para inicializar o ambiente;

Veja o passo a passo acima de maneira mais visual:

Destaque para a opção "Connect to Database", do item "Database", do menu do MySQL Workbench

Após realizar os passos, o Bando de Dados será reconectado, cliquei no botão OK para confirmar e então executar novamente o SELECT que está disponível no exercício.

SELECT CONCAT('O cliente ', TC.NOME, ' faturou ', 
CAST(SUM(INF.QUANTIDADE * INF.preco) AS char (20))
 , ' no ano ', CAST(YEAR(NF.DATA_VENDA) AS char (20))) AS SENTENCA FROM notas_fiscais NF
JOIN itens_notas_fiscais INF ON NF.NUMERO = INF.NUMERO
JOIN tabela_de_clientes TC ON NF.CPF = TC.CPF
WHERE YEAR(DATA_VENDA) = 2016
GROUP BY TC.NOME, YEAR(DATA_VENDA);

Caso ainda sim não funcione, peço por gentileza que envia mais detalhes sobre o erro que você está recebendo, para que eu possa te ajudar de forma mais assertiva.

Espero ter ajudado. Qualquer dúvida não hesite em recorrer ao fórum.

Bons estudos!

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