SELECT
VENDA_SABOR.ANO, VENDA_SABOR.TAMANHO, VENDA_SABOR.RECEITA, VENDA_SABOR.VOLUME, VENDA_SABOR.PRECO_MEDIO,
ROUND((VENDA_SABOR.RECEITA / VENDA_TOTAL.RECEITA_TOTAL) * 100, 2) AS PARTICIPACAO_RECEITA,
ROUND((VENDA_SABOR.VOLUME / VENDA_TOTAL.VOLUME_TOTAL) * 100, 2) AS PARTICIPACAO_VOLUME
FROM
(SELECT
TP.TAMANHO,
YEAR(NF.DATA_VENDA) AS ANO,
ROUND(SUM(INF.PRECO * INF.QUANTIDADE),2) AS RECEITA,
ROUND(SUM(INF.QUANTIDADE),0) AS VOLUME,
ROUND((SUM(INF.PRECO * INF.QUANTIDADE) / SUM(INF.QUANTIDADE)),2) AS PRECO_MEDIO
FROM
tabela_de_produtos AS TP
INNER JOIN itens_notas_fiscais AS INF ON TP.CODIGO_DO_PRODUTO = INF.CODIGO_DO_PRODUTO
INNER JOIN notas_fiscais AS NF ON INF.NUMERO = NF.NUMERO
GROUP BY
TP.TAMANHO,
YEAR(NF.DATA_VENDA)
) AS VENDA_SABOR
INNER JOIN
(SELECT
YEAR(NF.DATA_VENDA) AS ANO,
ROUND(SUM(INF.PRECO * INF.QUANTIDADE),2) AS RECEITA_TOTAL,
ROUND(SUM(INF.QUANTIDADE),0) AS VOLUME_TOTAL
FROM
tabela_de_produtos AS TP
INNER JOIN itens_notas_fiscais AS INF ON TP.CODIGO_DO_PRODUTO = INF.CODIGO_DO_PRODUTO
INNER JOIN notas_fiscais AS NF ON INF.NUMERO = NF.NUMERO
-- WHERE YEAR(NF.DATA_VENDA) = 2016
GROUP BY YEAR(NF.DATA_VENDA)
) AS VENDA_TOTAL
ON VENDA_SABOR.ANO = VENDA_TOTAL.ANO
WHERE
VENDA_SABOR.ANO IN (2016)
-- HAVING
-- PART_RECEITA > 20
ORDER BY
VENDA_SABOR.ANO ASC, VENDA_SABOR.RECEITA DESC