M
Но при раскладе как ты описал, в любом случае чем-то придется жертвовать
Size: a a a
M
M
D
with cte as (select row_number() over (order by scores desc) rank, user_id, scores
from scores
)
select *
from cte
where rank between (
select rank - 5
from cte
where user_id = 12
)
and (select rank + 5 from cte where user_id = 12)
with cte as (select row_number() over (order by scores desc) rank, user_id, scores
from scores
)
with user_rank as (select
rank from cte
where user_id=12
)
select *
from cte
where rank between user_rank - 5 and user_rank
+ 5
A
with cte as (select row_number() over (order by scores desc) rank, user_id, scores
from scores
)
with user_rank as (select
rank from cte
where user_id=12
)
select *
from cte
where rank between user_rank - 5 and user_rank
+ 5
A
D
D
A
D
A
D
D
A
D
select rank +- 5 from cte where user_id=12
A
A
A
D
select rank +- 5 from cte where user_id=12
D
D