Fiz a minha assim:
select
'O cliente '
||trim(tc.nome)||' comprou '
||trim(to_char(sum(inf.quantidade * inf.preco), 'L999G999G999D99'))
||' no ano de '
||extract(year from nf.data_venda)
||'.' as resultado
from
tabela_de_clientes tc
inner join notas_fiscais nf on tc.cpf = nf.cpf
inner join itens_notas_fiscais inf on nf.numero = inf.numero
group by
tc.nome,
extract(year from nf.data_venda)
having
extract(year from nf.data_venda) = '2016'
order by
tc.nome