Sobes.tech
Middle

Mis vahe on RANK ja DENSE_RANK vahel?

sobes.tech AI

Vastus AI-lt

RANK ja DENSE_RANK on SQL aknās funkcijas, kas piešķir rindām rangu logā, bet atšķiras pēc uzvedības, ja ir vienādas vērtības (t.i., vienlīdzības).

  • RANK(): Piešķir vienādu rangu vienādām vērtībām, bet izlaiž nākamos rangus. Piemēram, ja divas rindas dalās pirmajā vietā, abas saņem 1. rangu, bet nākamā rinda saņem 3. rangu (izlaižot 2).

  • DENSE_RANK(): Arī piešķir vienādu rangu vienādām vērtībām, bet neizlaiž rangus. Tajā pašā piemērā, divas rindas ar 1. rangu, nākamā saņem 2. rangu.

Piemērs:

Vērtība RANK() DENSE_RANK()
100 1 1
100 1 1
90 3 2
80 4 3

Tādējādi, DENSE_RANK() sniedz blīvus rangus bez tukšumiem, bet RANK() ņem vērā tukšumus, ja ir vienādas vērtības.