Sabem me dizer se essa consulta também está certa? sem utilizar subquery. Se não , por que estaria errada? Não entendi pq o professor não fez assim.
select nome,sum(quantidade), to_char(nf.data_venda,'yy/MM'),tc.volume_de_compra 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 to_char(nf.data_venda,'yy/MM'),nome,tc.volume_de_compra
having sum(quantidade) < tc.volume_de_compra
;