SQL выход в качестве рейтинга - PullRequest
0 голосов
/ 20 октября 2010

Если у меня есть таблица случайных значений в таблице sql, как я могу экспортировать и отобразить их как грабли, а не как абсолютное значение ... например ... если три значения 30 85 и 90, как я могуполучить 30 сделать отображение как 1 или 1, 85 как 2 или 2 и т. д.

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

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 голос
/ 20 октября 2010

Попробуйте:

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