我正在寻找一个数学排名公式。
示例
2008 2009 2010
A 5 6 4
B 6 7 5
C 7 8 2
我想为每个句号代码字段添加一个排名列
rank
2008 2009 2010 2008 2009 2010
B 6 7 5 2 1 1
A 5 6 4 3 2 2
C 7 2 2 1 3 3
请不要使用循环遍历行和列的方法进行回复,随着时间的推移递增排名值,这很容易。我正在寻找一个公式,就像找到总百分比(项目/总数)一样。我知道我以前见过这个,但是很难找到它。
提前致谢!
答案 0 :(得分:5)
sort((letters_col,number_col)以number_col递减)
与排序alg一样高效。
然后对行进行编号
我真的对你的评论感到不安“请不要投票这个答案,排序和循环不是我要求的。我在原来的问题中明确说明了这一点。”,和负面投票,因为,你可能已经收到的各种答案,它基本上是正确的。
然而,我一直在思考你之前和之后如何“看过这个”。
嗯,我想我得到了答案:你在Excel中看到了这个。
看看这个:
alt text http://i29.tinypic.com/20qnr14.png
这是输入公式并按列H排序后的结果。
这正是你想要的......
答案 1 :(得分:1)
你在用什么?如果您正在使用Excel,那么您正在寻找RANK(num,ref)。
=RANK(B2,B$2:B$9)
我不知道有任何内置的编程语言,它总是需要某种形式的循环。
答案 2 :(得分:0)
如果你想要单个元素的等级,你可以在O(n)中通过循环遍历元素,计算在给定元素之上有多少值,并添加1来实现。 / p>
如果你想要所有的等级,那么最好的(也是唯一的)方法是对元素进行排序。你做的任何其他事情都等同于排序(没有“公式”)
答案 3 :(得分:0)
您使用的是T-SQL吗? T-SQL RANK()可以拉出你想要的东西。