Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resolução Exercício - Listando expressão natural

SELECT
    CONCAT(
        'O cliente ',
        c.NOME, 
        ' faturou R$',
        CONVERT(ROUND(SUM(i.QUANTIDADE * i.PRECO), 2), CHAR),
        ' no ano de 2016'
    ) AS string_formatada
FROM tabela_de_clientes AS c
LEFT JOIN notas_fiscais AS n ON c.CPF = n.CPF
LEFT JOIN itens_notas_fiscais AS i ON n.NUMERO = i.NUMERO
WHERE 1=1
AND YEAR(n.DATA_VENDA) = 2016
GROUP BY
    c.NOME
ORDER BY
    c.NOME ASC
;

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

2 respostas
solução!

Oi, Carlos! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Sua solução está bem estruturada e demonstra um bom uso de funções do MySQL para gerar uma saída em linguagem natural. O uso de CONCAT, junto com ROUND e SUM, ficou bem aplicado para montar a frase final, e o GROUP BY c.NOME garante corretamente o agrupamento por cliente. Um ponto interessante é o uso do LEFT JOIN, que mantém os clientes mesmo sem registros, o que pode ser útil dependendo do cenário de análise.

Uma dica interessante para o futuro é utilizar o FORMAT() para melhorar a exibição de valores monetários, deixando com separador de milhar automaticamente:


SELECT 
    CONCAT(
        'O cliente ',
        c.NOME,
        ' faturou R$',
        FORMAT(SUM(i.QUANTIDADE * i.PRECO), 2),
        ' no ano de 2016'
    ) AS string_formatada
FROM tabela_de_clientes c;

Nesse código, FORMAT já retorna o número formatado como texto com duas casas decimais, facilitando a leitura do resultado.

Conteúdo relacionado:
DOCUMENTAÇÃO
FORMAT
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Obrigado pela dica, Monalisa. Vou aderi-la em próximas ocasiões parecidas.