我收到了这个查询,
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'}
)中的条目过滤结果,这会影响结果{ {1}}价值。我找到了pos
和FILTER
,但我不确定如何将其中一个放入此查询中。我该怎么做?
如果有帮助的话,这是完整的表格:
WITHIN GROUP
答案 0 :(得分:1)
为什么不先选择那些?
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)
(未经测试,仅因为我没有足够的上下文来测试)