Menu
Coddy logo textTech

Funções RANK e DENSE_RANK

Parte da seção Fundamentos do Journey de SQL da Coddy. Lição 65 de 72.

ROW_NUMBER() é um tipo de função de classificação, e há mais duas: RANK() e DENSE_RANK().

A função RANK() numera as linhas como ROW_NUMBER(), mas atribui números idênticos às mesmas linhas e pula números. DENSE_RANK() é semelhante a RANK(), mas não pula números.

Por exemplo:

idlevel
15
26
36
47
57
65
SELECT id, 
	ROW_NUMBER() OVER (ORDER BY level) as row_num,
	RANK() OVER (ORDER BY level) as row_rank,
	DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1

Isso retornará:

idrow_numrow_rankrow_dense_rank
1111
6211
2332
3432
4553
5653

Explicação:

  • ROW_NUMBER(): Sempre único: 1, 2, 3, 4, 5, 6
  • RANK():
    • nível 5 (2 linhas): ambas recebem a classificação 1
    • nível 6 (2 linhas): ambas recebem a classificação 3 (pula 2)
    • nível 7 (2 linhas): ambas recebem a classificação 5 (pula 4)
  • DENSE_RANK():
    • nível 5 (2 linhas): ambas recebem a classificação 1
    • nível 6 (2 linhas): ambas recebem a classificação 2 (sem pular)
    • nível 7 (2 linhas): ambas recebem a classificação 3 (sem pular)
challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • medals: region, medal_color, medal_count

Crie uma consulta que mostre a região, a contagem total de medalhas (soma de todas as medalhas, independentemente da cor) e dois tipos de classificações:

  1. Uma regular_rank (com lacunas) sobre a soma das medalhas
  2. Uma dense_rank (sem lacunas) sobre a soma das medalhas

Ordene o resultado por:

order by total_medals desc, region asc

Experimente você mesmo

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Playground de SQL