Если я нигде не ошибся, то вот проще вариант (для MS SQL, но, подозреваю, что с небольшими доработками подойдет и для Oracle)
select ROW_NUMBER() over (order by u.nickname)
,u.nickname
,count(distinct v.meme_id)
from users u
inner join views v on v.user_id = u.id
group by u.nickname
Вот эта конструкция сортирует как надо и в указанном порядке сортировки нумерует
ROW_NUMBER() over (order by u.nickname)
Не до конца уверен вот в этом "count(distinct meme_id)", не очень уверен в структуре таблиц, но, на первый взгляд, все верно.