sql输出作为排名

时间:2010-10-20 18:10:57

标签: sql mysql analytics ranking rank

如果我在sql表中有一个随机值表,我怎样才能将它们导出并显示为raking而不是绝对值...例如..如果三个值是30 85和90我怎么办?获得30显示为1或1,85显示为2或2等

2 个答案:

答案 0 :(得分:2)

MySQL没有分析功能支持(ROW_NUMBER,RANK,DENSE_RANK),这通常是您对这些要求的使用。

使用:

  SELECT @rownum := @rownum + 1 AS ranking
    FROM YOUR_TABLE t
    JOIN (SELECT @rownum := 0) r
ORDER BY t.value

示例:

  SELECT x.num,
         @rownum := @rownum + 1 AS ranking
    FROM (SELECT 30 AS num
          UNION ALL
          SELECT 85
          UNION ALL
          SELECT 90) x
    JOIN (SELECT @rownum := 0) r
ORDER BY x.num

您可以使用:

SELECT (SELECT COUNT(*)
          FROM YOUR_TABLE b
         WHERE b.value <= a.value) AS ranking
  FROM YOUR_TABLE a

...但重复项的排名值相同。而且你必须确保价值比较的方向正确。

答案 1 :(得分:1)

尝试:

set @i = 0;
select myValue,
        @i:=@i+1 as Ranking
from myTable 
order by myValue ASC