postgresql - 在过滤和排序的行列表PostgreSQL中选择行位置
问题描述
我收到了这个查询,
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
值。我找到了FILTER
and WITHIN GROUP
,但我不确定如何将其中一个放入此查询中。我该怎么做?
如果有帮助的话,这是完整的表格:
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)
(未经测试只是因为我没有足够的上下文来测试)
推荐阅读
- django - 如何让员工访问 Django 中新创建的用户
- javascript - .map() 函数对 Jquery 数组混淆
- python - 带有自动轮换密码数据库的 Django 连接
- phpwebsocket - PHP:无法连接到 francium diffsocket
- r - 无法在 R 中加载 shapefile“错误:未找到功能”
- android - 如何使用 Content Resolver 从图库中的图像中获取路径数据
- c# - 如果值为空,则使用 Dapper 返回日期
- javascript - 如何在使用 Slim 的 html 标签中添加带有 id 的 javascript 代码?
- wpf - 事件处理程序未在属性更改时触发
- javascript - 如何更改数据表中的行颜色?