SELECT a.first_name,
a.age,
a.gender,
count(b.age)+1 as rank
FROM person a
left join person b
on a.age>b.age and a.gender=b.gender
group by a.first_name,
a.age,
a.gender
order by gender,rank
SELECT a.first_name,
a.age,
a.gender,
count(b.age)+1 as rank
FROM person a
left join person b
on a.age>b.age and a.gender=b.gender
group by a.first_name,
a.age,
a.gender
order by gender,rank