Troszkę mało czytelne to jest., uważam że powinieneś mieć w bazie klientów informacje o tym ile aktualnie maja zamowień.
Sprawdź może
SELECT *
FROM customer c
WHERE
(c.register_date >= CURDATE() - INTERVAL 60 DAY
AND c.register_date < CURDATE() - INTERVAL 30 DAY
AND NOT EXISTS (SELECT 1 FROM order o WHERE c.customer_id = o.customer_id))
OR
EXISTS (SELECT 1 FROM order o WHERE c.customer_id = o.customer_id AND o.order_date >= CURDATE() - INTERVAL 60 DAY)
Klienci, którzy kupili co najmniej jedną książkę w ciągu ostatnich 60 dni, są filtrowani przez pierwszy EXISTS clause. Klienci, którzy zarejestrowali się między 30 a 60 tym dniem temu, ale nie zamówili żadnej książki, są filtrowani przez drugi EXISTS clause w połączeniu z AND NOT EXISTS clause.