Traz o mesmo resultado, mas não utilizei um inner join para subconsulta e o código ficou mais visível
SELECT
TP.SABOR,
MAX(YEAR(NF.DATA_VENDA)) AS ANO,
SUM(INF.QUANTIDADE) AS QUANTIDADE_TOTAL,
ROUND((SUM(INF.QUANTIDADE) / (SELECT SUM(INF2.QUANTIDADE)
FROM notas_fiscais NF2
INNER JOIN itens_notas_fiscais INF2 ON NF2.NUMERO = INF2.NUMERO
WHERE YEAR(NF2.DATA_VENDA) = 2016))*100, 2) as PERCENTUAL
FROM
notas_fiscais as NF
INNER JOIN
itens_notas_fiscais as INF ON NF.NUMERO = INF.NUMERO
INNER JOIN
tabela_de_produtos as TP ON INF.CODIGO_DO_PRODUTO = TP.CODIGO_DO_PRODUTO
WHERE
YEAR(NF.DATA_VENDA) = 2016
GROUP BY
TP.SABOR
ORDER BY
QUANTIDADE_TOTAL DESC