позиции определенного уникального айди в таблице
Например я хочу составить топ по определенному параметру, где лимит например 10 и я хочу человеку, который выходит за эту 10, показать какое именно у него место
В общем можно ли получить позицию в таблице определенного айди? Если используется сортировка и так далее, я просто не хочу выбирать сразу всех, поэтому решил узнать, вдруг есть решение
Row_number() ?
SELECT row_number() OVER (ORDER BY full_battle DESC) AS INDEX, user_id, full_battle FROM public."users" WHERE user_id = <тут айди> ORDER BY full_battle DESC При выполнении такой функции, индекс равен 1, но если убрать условие WHERE, то на этом айди индекс будет 16, как мне получать именно 16?
Можно подробнее?
Добавить колонку full_battle_rank и держать в ней этот номер. Остальные варианты, в принцыпе, возможны -- но требуют много ресурсов на каждый запрос.
и как вы ее актуальной собираетесь поддерживать?)
Как поддержывать актуальной -- зависит от смысла этой колонки.
вешаете индекс на колонку full_battle и позапросом (select count(full_battle) + 1 from users where full_battle > t.full_battle), но если бзер на дне по рейтингу, слону придется пробежаться практически по всему индексу)
Обсуждают сегодня