Okay using a datefield to calculate age is in the mysql tutorial. You can do it like this:
Code:
(YEAR(CURDATE())-YEAR(birth)) - (RIGHT(CURDATE(),5) < RIGHT (birth,5)) AS age from yourtable
Now if you want to separate out into those age categories you'd need to use CASE. You want to repeat the case for each age category:
Code:
SELECT
SUM(CASE WHEN (YEAR(CURDATE())-YEAR(birth)) - (RIGHT(CURDATE(),5) < RIGHT(birth,5)) < 18 THEN 1 ELSE 0 END) as `under 18`,
SUM(CASE WHEN (YEAR(CURDATE())-YEAR(birth)) - (RIGHT(CURDATE(),5) < RIGHT(birth,5)) between 18 and 25 THEN 1 ELSE 0 END) as `18 to 25`,
SUM(CASE WHEN (YEAR(CURDATE())-YEAR(birth)) - (RIGHT(CURDATE(),5) < RIGHT(birth,5)) between 25 and 35 THEN 1 ELSE 0 END) as `25 to 35`,
SUM(CASE WHEN (YEAR(CURDATE())-YEAR(birth)) - (RIGHT(CURDATE(),5) < RIGHT(birth,5)) > 35 THEN 1 ELSE 0 END) as `over 35`
FROM yourtablename
WHERE sex='F'
Bookmarks