ранжирование данных по нескольким столбцам в mysql с использованием функции ранга - PullRequest
0 голосов
/ 21 февраля 2020

Я очень новичок в mysql и пытался ранжировать лучшие записи на основе двух полей

, предоставляя вам текущий сценарий и вывод вместе с желаемым выводом

Текущий сценарий:

select u_rank, c_rank,u_name,c_name, 
        @curRank := @curRank + 1 AS rank 
from ( 
        SELECT u_rank, c_rank,u_name,c_name 
        from abc
    ) a, 
     (
        select @curRank := 0
    ) r 
order by c_rank,u_rank

Текущий выход

enter image description here

МОЙ ЖЕЛАЕМЫЙ ВЫХОД ЕСТЬ

enter image description here

Пожалуйста, помогите

1 Ответ

0 голосов
/ 21 февраля 2020

Если я правильно определяю ваш вопрос, вы хотите ранжировать c_ranks по возрастанию или каждое u_name, а затем упорядочить по этому рангу, а затем u_rank. После этого вам нужно получить ранг для всех записей в этом порядке. Я не уверен, что способ, которым я только что сформулировал, имел какой-то смысл ... но следующий результат должен получить этот результат для вас:

SET @rank1 = 0;
SET @rank2 = 0;
SET @u_name = '';

SELECT u_rank, c_rank, u_name, c_name, @rank2 := @rank2 + 1 AS rank
FROM (
      SELECT u_rank, 
             c_rank, 
             c_name, 
             @rank1 := (@rank1 + 1 - IF(@u_name = u_name, 0, @rank1)) AS rank1, 
             @u_name := u_name AS u_name 
      FROM abc 
      ORDER BY u_name, c_rank
) foo
ORDER BY rank1, u_rank;
...