MySQL:
SELECT T.YEAR,
SUM (CASE WHEN T.W = 1 THEN 1 ELSE 0 END) AS MEN,
SUM (CASE WHEN T.W = 2 THEN 1 ELSE 0 END) AS WOMEN
FROM (SELECT (YEAR(CURRENT_DATE) - YEAR(F.DR)) DIV 10 * 10 AS YEAR, F.W
FROM DB_PERSON AS P LEFT JOIN DB_PERSON_FIO AS F ON P.ID = F.ID_PERSON
WHERE P.STAT > 0) AS T
GROUP BY T.YEAR
ORDER BY T.YEAR;
Шаг в 10 лет:
1)
YEAR(CURRENT_DATE) - YEAR(F.DR) - из текущей даты вычитаем дату рождения чтобы получить количество лет. (не учитывая месяцы и дни по этому такой способ не очень точный)
2)
DIV 10 * 10 - делим без остатка на 10 и затем умножаем снова на 10 чтобы получить шаг в 10 лет.
Немного изменил:
SELECT T.YEAR,
SUM (CASE WHEN T.W = 1 THEN 1 ELSE 0 END) AS MEN,
SUM (CASE WHEN T.W = 2 THEN 1 ELSE 0 END) AS WOMEN
FROM (SELECT (DATE_FORMAT(FROM_DAYS(TO_DAYS(CURRENT_DATE) - TO_DAYS(F.DR)), '%Y') + 0) DIV 10 * 10 AS YEAR,
F.W
FROM DB_PERSON AS P LEFT JOIN DB_PERSON_FIO AS F ON P.ID = F.ID_PERSON
WHERE P.STAT > 0) AS T
GROUP BY T.YEAR
ORDER BY T.YEAR;