Sobes.tech
Middle

Care este diferența dintre RANK și DENSE_RANK?

sobes.tech AI

Răspuns de la AI

RANK și DENSE_RANK sunt funcții de fereastră în SQL care atribuie ranguri rândurilor dintr-o fereastră, dar diferă în comportament în cazul valorilor egale (adică în cazul egalităților).

  • RANK(): Atribuie același rang valorilor egale, dar sare peste următoarele ranguri. De exemplu, dacă două rânduri împart locul întâi, ambele primesc rangul 1, iar următorul rând va primi rangul 3 (sărind rangul 2).

  • DENSE_RANK(): De asemenea, atribuie același rang valorilor egale, dar nu sare peste ranguri. În același exemplu, două rânduri cu rangul 1, următorul va avea rangul 2.

Exemplu:

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

Astfel, DENSE_RANK() oferă ranguri dense fără pauze, în timp ce RANK() ia în considerare pauzele în cazul egalităților.