Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql postgrest检索排名结果_Postgresql_Postgrest - Fatal编程技术网

Postgresql postgrest检索排名结果

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

我制作了一个游戏,将等级和分数保存到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  | 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