You can use a HAVING
clause to filter based on an aggregate:
SELECT month(postulationdate), count(idpostulant)
FROM postulations
WHERE postulationdate >= '2014-01-01'
GROUP BY month(postulationdate)
HAVING count(idpostulant) >= 3
If you have an index on postulationdate
it will expedite the initial filtering that takes place in your WHERE
clause.
Update: It occurs that you might mean >= 3 in 2014 total, then broken up by month, you can do this:
SELECT month(postulationdate), count(idpostulant)
FROM postulations AS a
WHERE postulationdate >= '2014-01-01'
AND EXISTS(SELECT idpostulant
FROM postulations AS b
WHERE postulationdate >= '2014-01-01'
AND a.idpostulent = b.idpostulent
GROUP BY idpostulant
HAVING count(idpostulant) >= 3)
GROUP BY month(postulationdate)