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.