Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Klasyfikacja turniejów wielowydaniowych

Możesz emulować funkcję rankingową w MySQL, używając samodzielnego łączenia z wartościami o wyższym wyniku w tym samym Event , a następnie policzenie liczby wyższych wyników dla każdego uczestnika:

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

Wyjście:

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

Demo na dbfiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Porównaj struktury dwóch baz danych?

  2. mysql:użyj SET czy wielu kolumn?

  3. MySql, podziel ciąg i wstaw do tabeli

  4. Jak przechowywać wxImage w bazie danych, używając C++?

  5. Używanie .aggregate() na wartości wprowadzonej za pomocą .extra(select={...}) w zapytaniu Django?