Вот еще один способ, помимо ответа Гордона.Используются соединения:
SELECT
t1.date_of_birth,
COUNT(*) AS count
FROM (SELECT DISTINCT date_of_birth FROM yourTable) t1
INNER JOIN yourTable t2
ON t1.date_of_birth >= t2.date_of_birth
GROUP BY
t1.date_of_birth;
Примечание. Я пропустил шаг.Видимо, вы также хотите сообщить о пропущенных датах.Если это так, то вы можете заменить то, что я назвал t1
таблицей календаря.Для демонстрации можно указать все даты:
SELECT
t1.date_of_birth,
COUNT(*) AS count
FROM
(
SELECT '1987-09-08' AS date_of_birth UNION ALL
SELECT '1987-09-09' UNION ALL
SELECT '1987-09-10' UNION ALL
SELECT '1987-09-11' UNION ALL
SELECT '1987-09-12'
) t1
LEFT JOIN yourTable t2
ON t1.date_of_birth >= t2.date_of_birth
GROUP BY
t1.date_of_birth;

Демо
На практике ваша календарная таблица будет являться истинной таблицей, которая просто содержит все даты, которые вы хотите отобразить в наборе результатов.