在PostgreSQL 8.3中实现总订单排序
8.3的问题是…..等级在8.4中介绍 考虑数字[10,6,6,2] 我希望实现这些数字的排名,其中排名等于行号 Rank,score 1, 10 2,6 3,6 4,2 等级、分数 1, 10 2,6 3,6 4,2 部分解决方案是自联接并计算得分更高或相等的项目 这就产生了 1,10 3,6 3,6 4,2 1,10 3,6 3,6 4,2 这不是我想要的在PostgreSQL 8.3中实现总订单排序,sql,postgresql,rank,postgresql-8.3,Sql,Postgresql,Rank,Postgresql 8.3,8.3的问题是…..等级在8.4中介绍 考虑数字[10,6,6,2] 我希望实现这些数字的排名,其中排名等于行号 Rank,score 1, 10 2,6 3,6 4,2 等级、分数 1, 10 2,6 3,6 4,2 部分解决方案是自联接并计算得分更高或相等的项目 这就产生了 1,10 3,6 3,6 4,2 1,10 3,6 3,6 4,2 这不是我想要的 有没有一种方法可以进行排名,甚至只是按分数排序,然后以某种方式提取行号?您是否有此表的主键 只需自行加入并计算项目:分数更高或相等和PK
有没有一种方法可以进行排名,甚至只是按分数排序,然后以某种方式提取行号?您是否有此表的主键 只需自行加入并计算项目:分数更高或相等和PK更高 PK比较会打破僵局,给你想要的结果
升级到9.1后,使用
行编号()
是否有此表的PK
只需自行加入并计算项目:分数更高或相等和PK更高
PK比较会打破僵局,给你想要的结果
升级到9.1后,使用
行编号()
有一种方法使用一个数组,该数组可与第8.3页一起使用。就性能而言,它可能不是非常高效,但如果没有太多的价值,它也可以
其思想是对临时数组中的值进行排序,然后提取数组的边界,然后使用generate_series
将其连接起来,逐个提取值,数组中的索引就是行号
假设表为分数(value int)
,则示例查询:
有一种方法使用了一个数组,可以与PG 8.3一起使用。就性能而言,它可能不是非常高效,但如果没有太多的价值,它也可以 其思想是对临时数组中的值进行排序,然后提取数组的边界,然后使用
generate_series
将其连接起来,逐个提取值,数组中的索引就是行号
假设表为分数(value int)
,则示例查询:
如果您想要一个相当于的行号,可以在8.3版中使用(临时):
调用
nextval()
请注意,序列(与任何临时对象一样)
- 仅在创建它的同一会话中可见
- 隐藏同名的任何其他表对象
- 在会话结束时自动删除
要在同一会话中使用序列,请在每次查询之前重复运行:
SELECT setval('foo', 1, FALSE);
如果您想要一个相当于的行号,可以在8.3版中使用(临时):
调用nextval()
请注意,序列(与任何临时对象一样)
- 仅在创建它的同一会话中可见
- 隐藏同名的任何其他表对象
- 在会话结束时自动删除
要在同一会话中使用序列,请在每次查询之前重复运行:
SELECT setval('foo', 1, FALSE);
为什么不升级到当前版本?Postgres 8.3是生命的终结:因为,你不能只按一个按钮升级。我正在迁移到9.1的过程中,但我需要在8.3中使用它。您的问题不明确。您是否需要等效的?为什么不升级到当前版本?Postgres 8.3是生命的终结:因为,你不能只按一个按钮升级。我正在迁移到9.1的过程中,但我需要在8.3中使用它。您的问题不明确。你想要同等的吗?
SELECT setval('foo', 1, FALSE);