Sostituisci WHERE clausola con HAVING , in questo modo:
SELECT o.ID , count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID
GROUP BY o.ID
HAVING count(p.CAT) > 3;
HAVING è simile a WHERE , ovvero entrambi vengono utilizzati per filtrare i record risultanti ma HAVING viene utilizzato per filtrare i dati aggregati (quando GROUP BY viene utilizzato).