sql - 在 POSTGRESQL 中排名放置查询

标签 sql postgresql

我有两个表:playerplayer_friend。表 player 具有三个字段:“id”、“level”和“username”。表 player_friend 有两个字段:“player_id”和“friend_id”。我可以通过查询 player 来获取排名中的所有位置,按“level”排序,结果中该行的索引就是排名中的位置:

SELECT (username, level) FROM player SORT BY level;

如何查询 player_friend 'friend_id' 中条目的排名、用户名和级别,其中 'player_id' = x?

例如:

玩家

id | username | level
 1 |        a |     1
 2 |        b |     3
 3 |        c |     2
 4 |        d |     5

玩家 friend

player_id | friend_id
        4 |         1
        4 |         2

预期结果:

placing | username | level
      2 |        b |     3
      4 |        a |     1

说明:用户名“b”的好友为全局排名第二,用户名“a”的好友为全局排名(按级别排序),示例中不可见,仅显示所在位置player_friend“player_id”是 4。

提前致谢!

最佳答案

我想你想要row_number():

select p.*
from player_friend pf join
     (select p.*, row_number() over (order by level) as placing
      from player p
     ) p
    on pf.friend_id = p.id;

关于sql - 在 POSTGRESQL 中排名放置查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62984357/

相关文章:

postgresql - Postgres 序列的 last_value 字段没有按预期工作

java - 使用 JDBI 将二维数组插入 PostreSQL DB?

sql - 存储内容翻译的有效方法?

sql - POSTGRES - 将同一列与不同文本组合成一行

mysql - MAX 或 ALL in sql

postgresql - 如何在 postgres 中对现有表进行分区?

mysql - 需要数据库设计规范化帮助 (5nf)

php - 从 yii2 hasmany() 函数获取数据

sql - PostgreSQL - 为什么我不能在不将复合键声明为唯一的情况下基于唯一列创建复合外键?

Postgresql 自定义函数速度慢,php 但如果使用带有 gin 索引的文本搜索直接在 psql 上输入则速度很快