Database
 sql >> Baza danych >  >> RDS >> Database

Jak dodać pozycje rankingowe wierszy w SQL za pomocą RANK()

Problem:

Chcesz uszeregować rekordy, pomijając pozycje rankingowe po wierszach o tej samej pozycji.

Przykład:

Nasza baza danych zawiera tabelę o nazwie championship z danymi w następujących kolumnach:id (klucz podstawowy), user_name i score .

id nazwa_użytkownika wynik
111 Jan 12
112 Maryi 23
115 Lisa 45
120 Alan 23
221 Chrystusa 23

Wyświetlmy wszystkie nazwy użytkowników i ich wyniki posortowane w porządku malejącym i uszeregowane według wyniku.

Rozwiązanie 1:

SELECT RANK() OVER(ORDER BY score DESC) AS rank_place,
  user_name,
  score
FROM championship;

To zapytanie zwraca następujący ranking:

rank_place nazwa_użytkownika wynik
1 Lisa 45
2 Maryi 23
2 Alan 23
2 Chrystusa 23
5 Jan 12

Zauważ, że numer rangi wynosi od 1 do 5, posortowany według wyniku w kolejności malejącej.

Dyskusja:

Użyj RANK jeśli chcesz pominąć pozycje w rankingu po wierszach o tej samej pozycji. W naszym przykładzie Mary, Alan i Chris mieli ten sam ranking 2. Następna kwalifikująca się pozycja to 5 (obliczona z 2 + 3 wierszy o tej samej pozycji).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bramki rzędowe, część 3:przeciw łączeniom

  2. Czy na jednej tabeli może istnieć wiele kluczy podstawowych?

  3. Profilowanie danych:odkrywanie szczegółów danych

  4. Ściągawka SQL:co to jest SQL, polecenia SQL i iniekcja SQL

  5. Jak wyeliminować zduplikowane wiersze w SQL?