Montei a resposta identificando o que estava em cada pasta, qual a ordem das colunas, fiz duas pequenas queries para garantir que o que tava conseguindo em cada uma era o que eu queria e então juntei para formar a query final q resolve o problema. Em cada query eu identei de uma forma que me ajudou a visualizar o que era o que.
/*
tabela com colunas: tamanho do produto, ano da venda = 2016, total vendido por
tamanho e percentagem em relação ao total das vendas
codigo_do_produto, numero e quantidade na inf
data_venda e numero nas nf
codigo_do_produto e tamanho na TP
*/
#tabela por tamanho
select TP.TAMANHO as tamanho, year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as quantidade
from
itens_notas_fiscais INF
inner join notas_fiscais NF
on NF.NUMERO = INF.NUMERO
inner join tabela_de_produtos TP
on TP.CODIGO_DO_PRODUTO = INF.CODIGO_DO_PRODUTO
where
year(NF.data_venda) = 2016
group by
TP.TAMANHO, year(NF.DATA_VENDA);
#tabela sem o total
select TP.TAMANHO as tamanho, year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as quantidade
from
itens_notas_fiscais INF
inner join notas_fiscais NF
on NF.NUMERO = INF.NUMERO
inner join tabela_de_produtos TP
on TP.CODIGO_DO_PRODUTO = INF.CODIGO_DO_PRODUTO
where
year(NF.data_venda) = 2016
group by
TP.TAMANHO, year(NF.DATA_VENDA);
#tabela total
select year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as total
from
itens_notas_fiscais INF
inner join notas_fiscais NF
on NF.NUMERO = INF.NUMERO
where
year(NF.data_venda) = 2016
group by
year(NF.DATA_VENDA);
#juntando
select vendas_tamanho.TAMANHO, vendas_tamanho.ano,
vendas_tamanho.QUANTIDADE, round(vendas_tamanho.quantidade/vendas_total.total * 100, 2) as participacao
from
(select TP.TAMANHO as tamanho, year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as quantidade
from
itens_notas_fiscais INF
inner join notas_fiscais NF
on NF.NUMERO = INF.NUMERO
inner join tabela_de_produtos TP
on TP.CODIGO_DO_PRODUTO = INF.CODIGO_DO_PRODUTO
where
year(NF.data_venda) = 2016
group by
TP.TAMANHO, year(NF.DATA_VENDA))
as vendas_tamanho
inner join
(select year(NF.DATA_VENDA) as ano, sum(INF.QUANTIDADE) as total
from
itens_notas_fiscais INF
inner join notas_fiscais NF
on NF.NUMERO = INF.NUMERO
where
year(NF.data_venda) = 2016
group by
year(NF.DATA_VENDA))
as vendas_total
on vendas_tamanho.ano = vendas_total.ano
order by
vendas_tamanho.QUANTIDADE desc;