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

Eu quase consegui sozinho...

-- selecionado tabela itens notas e notas fiscais

select * from itens_notas_fiscais A inner join notas_fiscais B on A.numero = B.numero;

-- selecionando apenas o numero do ano de 2016

select * from itens_notas_fiscais A inner join notas_fiscais B on A.numero = B.numero where year(data_venda) = 2016;

-- selecionando o faturamento de cada numero

select A.numero, B.data_venda, sum(quantidade) * sum(preco) as faturamentofrom itens_notas_fiscais A inner join notas_fiscais B on A.numero = B.numero where year(data_venda) = 2016 group by A.numero;

-- selecionando o faturamento de cada numero e o imposto

select A.numero, B.data_venda, B.imposto,sum(quantidade) * sum(preco) as faturamento from itens_notas_fiscais A inner join notas_fiscais B on A.numero = B.numero where year(data_venda) = 2016 group by A.numero;

-- descobrindo o imposto de cada faturamento

select A.numero, B.data_venda, B.imposto,sum(quantidade) * sum(preco) as faturamento, B.imposto * (sum(A.quantidade) * sum(A.preco)) as impostoXfaturamentofrom itens_notas_fiscais A inner join notas_fiscais B on A.numero = B.numero where year(data_venda) = 2016 group by A.numero;

-- agora quero descobrir somar tudo isso(não consegui):

select sum(B.imposto * (sum(A.quantidade) * sum(A.preco))) as faturamento2016from itens_notas_fiscais A inner join notas_fiscais B on A.numero = B.numero where year(B.data_venda) = 2016 group by year(B.data_venda);

2 respostas
solução!

Olá, Leonardo!

Você não pode usar funções de agregações dentro delas mesmas, ou seja, não pode ter um SUM() dentro de outro SUM() como você fez aqui:

sum(B.imposto * (sum(A.quantidade) * sum(A.preco))) as faturamento2016

Se pudesse compartilhar os dados que está usando pra essa análise, seria mais fácil de explicar e mostrar possíveis problemas que você pode ter multiplicando agregações assim. Mas resumindo, você pode usar dessa forma que terá o resultado correto:

SUM(B.imposto * (A.quantidade * A.preco)) AS faturamento2016

Eu estava no caminho certo! eu realmente não tinha noção de que não posso usar sum dentro de outro sum, eu realizei com apenas um sum e funcionou de boas, muito obrigado!