在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都会出现语法错误