1

我正在寻找一个数学排名公式。

样品是

    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

请不要回复通过行和列循环的方法,随着它的推移增加排名值,这很容易。我正在寻找一个公式,就像查找总数百分比(项目/总数)一样。我知道我以前见过这个,但是很难找到它。

提前致谢!

4

4 回答 4

4

排序 ((letters_col, number_col) 按 number_col 降序)

与您的排序算法一样高效。

然后给行编号,当然

编辑

我真的对你的评论感到不安“请不要投票给这个答案,排序和循环不是我想要的。我在我原来的问题中特别说明了这一点。”,以及反对票,因为你可能已经注意到收到的各种答案,它基本上是正确的。

然而,我一直在思考你可能在哪里以及如何“以前见过这个”。

好吧,我想我得到了答案:你在 Excel 中看到了这个。

看这个:

替代文字

这是输入公式并按 H 列排序后的结果。

这正是你想要的...

于 2010-06-11T21:55:52.617 回答
1

你在用什么?如果您使用 Excel,您正在寻找 RANK(num, ref)。

=RANK(B2,B$2:B$9)

我不知道有任何内置的编程语言,它总是需要某种形式的循环。

于 2010-06-12T09:52:13.640 回答
0

如果你想要单个元素的排名,你可以在 O(n) 中通过循环遍历元素,计算有多少值高于给定元素,然后加 1。

如果你想要所有元素的排名,最好的(也是唯一的)方法是对元素进行排序。您所做的任何其他事情都将等同于排序(没有“公式”)

于 2010-06-11T22:34:17.430 回答
0

你在使用 T-SQL 吗? T-SQL RANK()可能会拉你想要的。

于 2010-06-14T01:49:47.220 回答