Olá smagnun,
deve ter ocorrido algum problema quando fui editar o exercício da outra vez que ele não guardou a resposta. Agora sim ajustei lá e confirmei que ele manteve a resposta correta.
De qualquer forma, dado que o problema é buscar todos os alunos que não tiveram nenhuma matrícula nos últimos 45 dias, precisamos de uma subquery para primeiro buscar quais alunos fizeram matrícula nos últimos 45 dias:
select m.id from matricula m where m.aluno_id = a.id and m.data > now() - interval 45 day
Ai agora basta pegar entre todos os alunos, quais não se encontram nessa categoria de que fecharam uma matrícula nos últimos 45 dias. Neste momento que entra o not exists
:
select a.nome
from aluno a
where not exists (
select m.id
from matricula m
where m.aluno_id = a.id and m.data > now() - interval 45 day
);