Просмотр таблицы лидеров MySQL

У меня есть таблица со следующими данными

USER_ID | REVENUE
1  | 12,545
2  | 9,845
3  | 55,874

Есть ли у меня способ создать результат с ранжированием на лету в представлении, т.е.

USER_ID | REVENUE | RANK
3  |   55,874  |  1
1  |   12,545  |  2
2  |   9,845   |  3

Я мог бы попробовать сделать это, запустив cron, но хотел бы, чтобы результат был в реальном времени - сгенерирован MySQL в представлении.

Любые другие альтернативы приветствуются.


person buzzmonkey    schedule 18.11.2013    source источник


Ответы (2)


Это взлом, но в виде двух отдельных запросов:

select @last:=0;

select USER_ID, REVENUE, @RANK := @RANK + 1 as RANK
from YOURTABLE
order by ...
person Marc B    schedule 18.11.2013
comment
проблема заключается в том, что представления MySQL не могут использовать переменные или параметры! - person buzzmonkey; 19.11.2013

Да, это можно сделать одним запросом

select user_id, 
       revenue, 
       @rank := rank + 1 as rank
from your_table, (select @rank := 0) r
order by revenue desc
person juergen d    schedule 18.11.2013