8.3的问题是…..等级在8.4中引入。
考虑数字[10,6,6,2]
我希望得到一个秩等于行数的那些数的秩
等级,分数
1,10个
2,6个
3,6个
4,2个
部分解决方案是自连接并计算得分较高或相等的项。
这就产生了
1,10个
3,6个
3,6个
4,2个
这不是我想要的。
有没有办法排名,甚至只是按分数排序然后提取行号?

最佳答案

如果您想要一个与window function row_number()相等的行号,可以在版本8.3中使用(临时的)SEQUENCE即兴创作:

CREATE TEMP SEQUENCE foo;

SELECT nextval('foo') AS rn, *
FROM   (SELECT score FROM tbl ORDER BY score DESC) s

SQL Fiddle.
在调用nextval()之前,必须对子选择进行行排序。
注意序列(就像任何临时对象一样)。。。
仅在创建它的同一会话中可见。
隐藏任何其他同名的表对象。
在会话结束时自动删除。
要在每个查询之前重复运行同一会话中的序列,请执行以下操作:
SELECT setval('foo', 1, FALSE);

关于sql - 在PostgreSQL 8.3中实现总订单排名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14522671/

10-11 23:14