Another elegant solution to this problem -
select m.firstname, m.surname,
round(sum(b.slots)/2,-1) as hours,
rank() over(order by round(sum(b.slots)/2,-1) desc) rank
from cd.members m join cd.bookings b
using (memid)
group by memid
order by rank, 2, 1