在PostgreSQL的筛选和排序行列表中选择行位置
我收到了这个问题在PostgreSQL的筛选和排序行列表中选择行位置,postgresql,aggregate,aggregate-functions,aggregation,Postgresql,Aggregate,Aggregate Functions,Aggregation,我收到了这个问题 SELECT s.pos FROM (SELECT t.guild_id, t.user_id ROW_NUMBER() OVER(ORDER BY t.reputation DESC) AS pos FROM users t) s WHERE (s.guild_id, s.user_id) = ($2, $3) 它获取用户在公会中的排名,但我想通过t.user_id值数组中的条目(如{'1','64','83')来过滤结果,并使其影响结果pos值。我
SELECT s.pos
FROM (SELECT t.guild_id, t.user_id
ROW_NUMBER() OVER(ORDER BY t.reputation DESC) AS pos
FROM users t) s
WHERE (s.guild_id, s.user_id) = ($2, $3)
它获取用户在公会中的排名,但我想通过t.user_id值数组中的条目(如{'1','64','83')来过滤结果,并使其影响结果pos值。我在组中找到了筛选器和,但我不确定如何将其中一个放入此查询中。我该怎么做
这是完整的表格,如果有帮助的话:
Table "public.users"
Column | Type | Collation | Nullable | Default
------------+-----------------------+-----------+----------+---------
guild_id | character varying(20) | | not null |
user_id | character varying(20) | | not null |
reputation | real | | not null | 0
Indexes:
"users_pkey" PRIMARY KEY, btree (guild_id, user_id)
为什么不先选择这些呢
WITH UsersWeCareAbout AS (
SELECT * FROM users u WHERE u.user_id = ANY(subgroup_array)
), RepUsers AS (
SELECT t.guild_id, t.user_id, ROW_NUMBER() OVER(ORDER BY t.reputation DESC) AS pos
FROM UsersWeCareAbout t
) SELECT s.pos FROM RepUsers s WHERE (s.guild_id, s.user_id) = ($2, $3)
如果只是因为我没有足够的上下文进行测试,或者实际上我发现了一个问题,那么就没有进行测试。第一个选项应该是u.guild\u id、u.user\u id,最后一个选项应该是s.user\u id。但每当我尝试将any放入$2时,any$1都会出现语法错误