Заменете WHERE клауза с HAVING , като това:
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 е подобен на WHERE , тоест и двата се използват за филтриране на резултантните записи, но HAVING се използва за филтриране на обобщени данни (когато GROUP BY се използва).