Fiz a consulta de outra maneira. Modéstia à parte ficou mais elegante, rs, e rodou mais rápido. De quebra descobri, na tentativa, que dá pra usar o AND com o ON, no INNER JOIN, para relacionar tabelas:
ON TC.CPF = NF.CPF AND INF.NUMERO = NF.NUMERO
O select ficou assim:
SELECT CONCAT('O cliente ',TC.NOME,' faturou ',ROUND(SUM(INF.QUANTIDADE*INF.PRECO),0),' no ano de ',YEAR(NF.DATA_VENDA)) as RESULTADO
FROM tabela_de_clientes TC INNER JOIN notas_fiscais NF INNER JOIN itens_notas_fiscais INF
ON TC.CPF = NF.CPF AND INF.NUMERO = NF.NUMERO
WHERE YEAR(NF.DATA_VENDA) = 2016
GROUP BY TC.NOME;
Em tempo: só agora no final os exercícios propostos ficaram interessantes. Geralmente eles eram muito mais fáceis do que os selects das aulas. Fica a sugestão.