Значения ранга в Mysql - PullRequest
       14

Значения ранга в Mysql

0 голосов
/ 30 января 2019

У меня проблемы с поиском решения.Мне нужно сделать столбец, который ранжируется от наибольшего до наименьшего значения (столбец кровати) .Если значения совпадают, то значение с наибольшим числом (столбец spelersnr) 'выигрывает'.Я надеюсь, что вы можете помочь мне.

Это то, что я получил до сих пор.

SELECT    s.spelersnr, 
          naam , 
          (select max(bedrag) from boetes b  where b.spelersnr = s.spelersnr) as mbedrag,
          @curRank := @curRank + 1 AS POSITIE
FROM      spelers s, (SELECT @curRank := 0) r
ORDER BY  mbedrag ;

1 Ответ

0 голосов
/ 30 января 2019

Учитывая, что вы используете MySQL 8+, вы можете попробовать использовать функцию ROW_NUMBER здесь.Кроме того, мы можем переписать ваш запрос с помощью объединения, чтобы исключить коррелированный подзапрос в предложении select:

SELECT s.spelersnr, s.naam,
    ROW_NUMBER() OVER (ORDER BY b.mbedrag DESC, s.spelersnr DESC) rn
FROM spelers s
INNER JOIN
(
    SELECT spelersnr, MAX(bedrag) AS mbedrag
    FROM boetes
    GROUP BY spelersnr
) b
    ON s.spelersnr = b.spelersnr
ORDER BY
    b.mbedrag;
...