Database
 sql >> база данни >  >> RDS >> Database

Как да добавите позиции за класиране на редове в SQL с RANK()

Проблем:

Искате да класирате записи, като пропуснете позициите в класирането след редове, които имат същия ранг.

Пример:

Нашата база данни има таблица с име championship с данни в следните колони:id (първичен ключ), user_name и score .

id потребителско_име резултат
111 Джон 12
112 Мери 23
115 Лиза 45
120 Алан 23
221 Крис 23

Нека покажем имената на всички потребители и техните резултати, сортирани в низходящ ред и класирани по резултат.

Решение 1:

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

Тази заявка връща следното класиране:

rank_place потребителско_име резултат
1 Лиза 45
2 Мери 23
2 Алан 23
2 Крис 23
5 Джон 12

Обърнете внимание, че номерът на ранга е от 1 до 5, сортиран по резултат в низходящ ред.

Дискусия:

Използвайте RANK ако искате да пропуснете позиции в класирането след редове със същия ранг. В нашия пример Мери, Алън и Крис имат еднакво класиране от 2. Следващата отговаряща на условията позиция е 5 (изчислена от 2 + 3 реда със същия ранг).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Моделиране на основна структура от данни за управление на потребители, нишки и публикации

  2. Изпълнявайте SQL скриптове в мултитенантна среда с catcon.pl

  3. Как AI ще промени разработката и тестването на софтуер

  4. SQL Always On Availability Groups:Компютърни обекти

  5. DELETE VS DROP в SQL