sql >> Database teknologi >  >> RDS >> Mysql

Multi-event turneringsstilling

Du kan efterligne en rangeringsfunktion i MySQL ved at bruge en selv-join til værdier med en højere score i den samme Event , og tæl derefter antallet af højere score for hver deltager:

SELECT s1.Name, s1.Event, s1.Score, COUNT(s2.Name)+1 AS Rank
FROM scores s1
LEFT JOIN scores s2 ON s2.Event = s1.Event AND s2.Score > s1.Score
WHERE s1.Name = 'Bob'
GROUP BY s1.Name, s1.Event, s1.Score
ORDER BY s1.Name, s1.Event

Output:

Name    Event   Score   Rank
Bob     1       100     1
Bob     2       75      3
Bob     3       80      2

Demo på dbfiddle




  1. Mysql grupper efter to kolonner og vælg den maksimale værdi af tredje kolonne

  2. Hvordan laver man primær nøgle serielt?

  3. SQL:Optimering af BETWEEN-sætning

  4. Kan ikke installere plpython til postgres 12