2015-04-13 3 views
0

Я хотел бы оценить мои столбцы. (Столбец 1, столбец2) и добавьте общий Rank. Но я не знаю, как это сделать. См. Таблицу 1 и 2 для моего примера. Таблица 1 - текущая ситуация, и я хотел бы перейти к таблице 2. Поэтому я вычисляю ряды и сохраняю их в своей новой таблице.Столбцы столбцов MySQL

Хочет поднять колонку 1 максимум -> низкий, колонка2 низкая -> высокая. Для generalRANK я хотел бы объединить ранги столбцов с разными весами. 1 * Colomn1RANK + 2 * Colomn1RANK low -> high.

Возможно ли это, если да, то каким образом?

enter image description here

+0

Не существует магического SQL-решения, которое всегда будет держать вас в расчете по столбцам и вы рассчитываете общий ранг. Для меня вы будете искать скриптовое решение для этих обновлений. –

+0

[подобный вопрос из стека] [1] [1]: http://dba.stackexchange.com/questions/97184/how-do-i-rank-the-total-score-in Опорные позиции/97187 # 97187 внимательно прочитайте оба предложенных решения – ninjabber

ответ

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 и ранжирующая переменная во внешнем запросе.

+0

задайте переменные перед их использованием. Окружать их транзакцией – ninjabber

Смежные вопросы