1
resposta

Resposta usando subquery

Olá, fiz dessa forma? Tem algum problema em termos de desempenho? Percebi que o código do professor foi mais simples.

SELECT 
ANO,
ROUND(SUM(VALOR_FINAL), 2) FROM
(SELECT
    YEAR (DATA_VENDA) AS ANO,
    SUM((QUANTIDADE*PRECO)*IMPOSTO) AS VALOR_FINAL
    FROM itens_notas_fiscais A
    INNER JOIN notas_fiscais B
    ON A.NUMERO = B.NUMERO
    GROUP BY DATA_VENDA, A.NUMERO
) AS NOVA_TABELA
WHERE ANO = 2016;
1 resposta

Oi, Letícia, como vai?

O seu código está correto e vai retornar o resultado esperado. A subquery que você usou cria uma tabela temporária (NOVA_TABELA), que é então usada na consulta principal. Isso pode ser menos eficiente porque o MySQL precisa criar e preencher essa tabela temporária antes de poder executar a consulta principal.

Uma opção seria utilizar o seguinte código:

SELECT YEAR(DATA_VENDA), FLOOR(SUM(IMPOSTO * (QUANTIDADE * PRECO))) 
FROM notas_fiscais NF
INNER JOIN itens_notas_fiscais INF ON NF.NUMERO = INF.NUMERO
WHERE YEAR(DATA_VENDA) = 2016
GROUP BY YEAR(DATA_VENDA)

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software