我想对我的专栏进行排名。 (第1列,第2列)并添加一个overallRank。但我不知道该怎么做。有关我的示例,请参见表1和表2。表1是目前的情况,我想转到表2.所以我计算排名并将它们存储在我的新表中。
我想将Column1排在高位 - >低,Column2低 - >高。对于整体RANK,我想将列等级与不同的权重结合起来。 1 * Colomn1RANK + 2 * Colomn1RANK低 - >高。
这是否可能,如果是这样,怎么办?
答案 0 :(得分:1)
您可以使用变量添加排名。在这种情况下,您需要执行两次:
select t.*,
(col1rank + 2 * col2rank) as overallrank
from (select t.*, (@rn2 := @rn2 + 1) as col2rank
from (select t.*, (@rn1 := @rn1 + 1) as col1rank
from table t cross join
(select @rn1 := 0) vars
order by col1 desc
) t cross join
(select @rn2 := 0) vars
order by col2 asc
) t;
目前还不清楚overallrank
是否只是两个等级的组合,或者你是否想要另一个等级。如果是后者,那么它只是外部查询中的另一个order by
和排名变量。