Olá, Augusto, tudo bem?
Ao utilizarmos uma função de agregação, normalmente também precisamos informar a cláusula group by, que é utilizada para agrupar registros semelhantes de uma tabela em um ou mais campos.
No Oracle não é permitido realizar consultas onde os campos listados na seleção que não estão em uma função de agregação, não estão informados na cláusula group by, ou seja, se além dos campos que estão na função de agregação SUM
, você tivesse outros campos, como por exemplo, a data, você precisaria utilizar a cláusula group by:
SELECT
TO_CHAR(nf.data_venda, 'YYYY'),
FLOOR(SUM((inf.quantidade * INF.PRECO)* nf.imposto)) AS IMPOSTO_DEVIDO
FROM notas_fiscais NF
INNER JOIN itens_notas_fiscais INF
ON inf.numero = nf.numero
WHERE TO_CHAR(nf.data_venda, 'YYYY') = 2016
GROUP BY TO_CHAR(nf.data_venda, 'YYYY');
A título de curiosidade, caso queira ler um pouco mais a respeito deste assunto, indico a leitura do artigo Trabalhando com funções de agregação, publicado no blog da Alura.
Espero ter ajudado e bons estudos!