Olá, Filipe!
Pelo que percebo, seu código SQL está corretamente estruturado para responder à pergunta da atividade: "Quais foram os clientes que fizeram mais de 2000 compras em 2016?".
No entanto, você mencionou que o resultado obtido foi de 14 linhas, o que indica que 14 clientes fizeram mais de 2000 compras em 2016, segundo sua base de dados.
Se você esperava um número diferente de linhas, pode ser que haja alguma discrepância nos dados ou talvez uma interpretação diferente da pergunta. Por exemplo, se por "compras" entendermos "notas fiscais", então cada linha na tabela "notas_fiscais" representaria uma compra. No entanto, se por "compras" entendermos "itens comprados", então cada linha na tabela "itens_notas_fiscais" representaria um item comprado, e uma única nota fiscal poderia conter vários itens.
Seu código atual está contando o número de notas fiscais (ou seja, "compras" no primeiro sentido) por CPF. Se o que você quer é o número de itens comprados (ou seja, "compras" no segundo sentido), você precisaria modificar seu código para contar as linhas da tabela "itens_notas_fiscais" em vez das linhas da tabela "notas_fiscais".
Espero ter ajudado e bons estudos!