Database
 sql >> Base de Dados >  >> RDS >> Database

Como adicionar posições de classificação de linhas no SQL com RANK()

Problema:


Você deseja classificar os registros pulando as posições de classificação após as linhas que têm a mesma classificação.

Exemplo:


Nosso banco de dados tem uma tabela chamada championship com dados nas seguintes colunas:id (chave primária), user_name e score .
id user_name pontuação
111 João 12
112 Maria 23
115 Lisa 45
120 Alan 23
221 Cris 23

Vamos exibir os nomes de todos os usuários e suas pontuações classificadas em ordem decrescente e classificadas por pontuação.

Solução 1:

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

Essa consulta retorna a seguinte classificação:
rank_place user_name pontuação
1 Lisa 45
2 Maria 23
2 Alan 23
2 Cris 23
5 João 12

Observe que o número da classificação é de 1 a 5, classificado por pontuação em ordem decrescente.

Discussão:


Use RANK se você quiser pular as posições de classificação após as linhas com a mesma classificação. Em nosso exemplo, Mary, Alan e Chris tiveram a mesma classificação de 2. A próxima posição elegível é 5 (calculada a partir de 2 + 3 linhas com a mesma classificação).