Postgresql postgrest检索排名结果
我制作了一个游戏,将等级和分数保存到sql表中,如下所示:Postgresql postgrest检索排名结果,postgresql,postgrest,Postgresql,Postgrest,我制作了一个游戏,将等级和分数保存到sql表中,如下所示: create table if not exists api.scores ( id serial primary key, pseudo varchar(50), level int, score int, created_at timestamptz default CURRENT_TIMESTAMP ); 我想在ui中显示分数,每个分数的排名基于分数列,按desc排序 以下是一个示例数据: id | pseudo | le
create table if not exists api.scores (
id serial primary key,
pseudo varchar(50),
level int,
score int,
created_at timestamptz default CURRENT_TIMESTAMP
);
我想在ui中显示分数,每个分数的排名基于分数列,按desc排序
以下是一个示例数据:
id | pseudo | level | score | created_at
----+----------+-------+-------+-------------------------------
1 | test | 1 | 1 | 2020-05-01 11:25:20.446402+02
2 | test | 1 | 1 | 2020-05-01 11:28:11.04001+02
3 | szef | 1 | 115 | 2020-05-01 15:45:06.201135+02
4 | erg | 1 | 115 | 2020-05-01 15:55:19.621372+02
5 | zef | 1 | 115 | 2020-05-01 16:14:09.718861+02
6 | aa | 1 | 115 | 2020-05-01 16:16:49.369718+02
7 | zesf | 1 | 115 | 2020-05-01 16:17:42.504354+02
8 | zesf | 2 | 236 | 2020-05-01 16:18:07.070728+02
9 | zef | 1 | 115 | 2020-05-01 16:22:23.406013+02
10 | zefzef | 1 | 115 | 2020-05-01 16:23:49.720094+02
以下是我想要的:
id | pseudo | level | score | created_at | rank
----+----------+-------+-------+-------------------------------+------
31 | zef | 7 | 730 | 2020-05-01 18:40:42.586224+02 | 1
50 | Cyprien | 5 | 588 | 2020-05-02 14:08:39.034112+02 | 2
49 | cyprien | 4 | 438 | 2020-05-01 23:35:13.440595+02 | 3
51 | Cyprien | 3 | 374 | 2020-05-02 14:13:41.071752+02 | 4
47 | cyprien | 3 | 337 | 2020-05-01 23:27:53.025475+02 | 5
45 | balek | 3 | 337 | 2020-05-01 19:57:39.888233+02 | 5
46 | cyprien | 3 | 337 | 2020-05-01 23:25:56.047495+02 | 5
48 | cyprien | 3 | 337 | 2020-05-01 23:28:54.190989+02 | 5
54 | Cyzekfj | 2 | 245 | 2020-05-02 14:14:34.830314+02 | 9
8 | zesf | 2 | 236 | 2020-05-01 16:18:07.070728+02 | 10
13 | zef | 1 | 197 | 2020-05-01 16:28:59.95383+02 | 11
14 | azd | 1 | 155 | 2020-05-01 17:53:30.372793+02 | 12
38 | balek | 1 | 155 | 2020-05-01 19:08:57.622195+02 | 12
无论结果集是什么,我都想根据完整的表检索排名
我正在使用postgrest Web服务器
我该怎么做?您正在描述窗口函数
rank()
:
是的,我知道sql端,但我使用的是postgrest Web服务器:它不允许sql请求,我相信你能用上面的查询创建一个视图并从postgrest调用它吗?
select t.*, rank() over(order by score desc) rnk
from mytable t
order by score desc