Mysql

使用一列進行排名。如果 2 行中的值相同,則使用另一列排名

  • April 10, 2019

我有一張桌子作為 table1

id| hits | time
-------+--------+------
1 | 9    |    40.89
2 | 5    |    33.21
3 | 5    |    78.31
4 | 1    |    71.93
5 | 4    |    23.10
6 | 4    |    99.99
7 | 8    |    12.32
8 | 7    |    32.64

我想使用命中對值進行排名,如果 2 行具有相同數量的命中,我想使用時間對它們進行排名 那是時間最短的具有更高的排名 這是預期的結果


 id| hits | time     | rank 
-------+--------+--------------
1 | 9    |    40.89  |  1
2 | 5    |    33.21  |  4
3 | 5    |    78.31  |  5
4 | 1    |    71.93  |  8
5 | 4    |    23.10  |  6
6 | 4    |    99.99  |  7
7 | 8    |    12.32  |  2
8 | 7    |    32.64  |  3

任何幫助表示讚賞

SELECT *, RANK() OVER (ORDER BY hits DESC, `time` ASC) AS `rank`
FROM table1
ORDER BY id

引用自:https://dba.stackexchange.com/questions/234420