Как узнать на каком месте строка после сортировки?

Есть таблица пользователей в PostgreSQL. Делаю топ и нужно реализовать функцию, для определения местап пользователя по рейтингу.

Найти первые 3 места у меня не составило проблем с помощью:

SELECT * FROM users WHERE ratedByUsers > 1 ORDER BY rate DESC LIMIT 1 OFFSET $1

Где $1 - "Место - 1"

Но вот как мне найти место на котором расположен пользователь зная его id?


Ответы (1 шт):

Автор решения: flapenguin

Можете использовать оконные функции.

select
  users.*,
  rank() over (order by rate desc) as rank
from users
where rate between 20 and 70 -- любые условия фильтрации

https://www.postgresql.org/docs/current/tutorial-window.html

https://www.db-fiddle.com/f/dMGvmMtT71rj4pkVZdWVX3/0

→ Ссылка