1
resposta

Exercícios - Listando expressão natural

No exercício do tópico de funções, temos:

"Queremos construir um SQL cujo resultado seja, para cada cliente: “O cliente João da Silva faturou 120000 no ano de 2016”. Somente para o ano de 2016."

Minha solução proposta foi a seguinte:

SELECT (CONCAT('O cliente ', TC.NOME, ' faturou ', SUM(INTF.QUANTIDADE  * INTF.PRECO), ' no ano de 2016.')) AS RESULTADO FROM TABELADECLIENTES TC 
INNER JOIN NOTASFISCAIS NTF ON TC.CPF = NTF.CPF
INNER JOIN itensnotasfiscais INTF ON NTF.NUMERO = INTF.NUMERO
WHERE YEAR(DATAVENDA) = 2016 GROUP BY TC.NOME, YEAR(NTF.DATAVENDA); 

Porém, a solução apresentada na resolução é um pouco diferente:

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
INNER JOIN itens_notas_fiscais INF ON NF.NUMERO = INF.NUMERO
INNER JOIN tabela_de_clientes TC ON NF.CPF = TC.CPF
WHERE YEAR(DATA_VENDA) = 2016
GROUP BY TC.NOME, YEAR(DATA_VENDA)

Obtive o mesmo resultado e meu código rodou mais rápido que o proposto na solução do exercício. Porém minha dúvida é se na forma que eu resolvi estou perdendo alguma informação importante ou terei problema em algum caso específico.

1 resposta

Olá, Gabriele, tudo bem?

Desde já peço desculpas pela demora em obter retorno.

A sua solução está correta, e não há perda de informações . É importante ressaltar que podemos criar diferentes consultas, que geram o mesmo resultado.

A única diferença entre as duas soluções é que você utilizou a função SUM diretamente na concatenação da string, enquanto na solução proposta foi utilizado o CAST para converter o resultado da função SUM em uma string.

Ambas as soluções são válidas e produzem o mesmo resultado. No entanto, é sempre importante garantir que os dados estejam sendo tratados corretamente e que a formatação esteja adequada, principalmente em casos em que os dados envolvem diferentes tipos de dados (como números e strings), e a função CAST garante isso.

Espero ter ajudado.

Caso surja alguma dúvida, fico à disposição.

Abraços e até mais!

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