Редактировать: Извините, Гордон Линофф уже ответил на вопрос более прямо. Вот что я получаю за то, что наполовину отвлекаюсь во время ответа. :)
Вы можете использовать подзапрос, чтобы получить ReferralCount для рассматриваемой электронной почты, а затем получить количество пользовательских строк с более высоким счетчиком Referral Count.
Ваш подзапрос получит ReferralCount пользователя (например, "5" для [email protected]): select ReferralCount from users where [email protected]
.
Затем, если вы используете это как подзапрос в предложении where, вы можете подсчитать, сколько пользователей имеют более высокий ReferralCount (не забудьте добавить 1 к рангу. Если он возвращает «1» более высокий пользователь, тогда вы должны вывести «2» как текущий рейтинг пользователя):
select
(count(*) + 1) as Rank
from
users
where
ReferralCount > (select ReferralCount from users where [email protected])
Это выведет «2», потому что только [email protected] имеет больше рефералов, чем [email protected].
Вы можете пропустить пользователей с одинаковым ReferralCount. Например, если все три пользователя имеют «10» рефералов, а пользователь, которого вы запрашиваете, имеет «9», то приведенный выше запрос выдаст ранг «4», даже если 9 рефералов находятся только на втором месте после 10. Если вы скорее он вернет ранг «2» (второе место), тогда вы сможете получить отчетливое количество ReferralCount:
select
(count(distinct ReferralCount) + 1) as Rank
from
users
where
ReferralCount > (select ReferralCount from users where [email protected])
person
RToyo
schedule
01.05.2017