Sobes.tech
Middle

Qual é a diferença entre RANK e DENSE_RANK?

sobes.tech IA

Resposta da IA

RANK e DENSE_RANK são funções de janela em SQL que atribuem classificações às linhas dentro de uma janela, mas diferem no comportamento quando há valores iguais (ou seja, em empates).

  • RANK(): Atribui a mesma classificação a valores iguais, mas pula as classificações seguintes. Por exemplo, se duas linhas dividem o primeiro lugar, ambas recebem a classificação 1, e a próxima linha receberá a classificação 3 (o 2 é pulado).

  • DENSE_RANK(): Também atribui a mesma classificação a valores iguais, mas não pula classificações. No mesmo exemplo, duas linhas com classificação 1, a próxima receberá a classificação 2.

Exemplo:

Valor RANK() DENSE_RANK()
100 1 1
100 1 1
90 3 2
80 4 3

Assim, DENSE_RANK() fornece classificações densas sem pulos, enquanto RANK() considera os pulos em caso de igualdade.