Ի՞նչ տարբերություն կա RANK և DENSE_RANK-ի միջև։
sobes.tech AI
Պատասխան AI-ից
RANK և DENSE_RANK SQL-ում պատուհանային ֆունկցիաներ են, որոնք նշանակում են տողերի դասակարգում պատուհանի ներսում, բայց տարբեր են իրենց վարքով երբ կան նույն արժեքներ (այսինքն՝ հավասարություններ):
-
RANK(): Միևնույն արժեքներին տալիս է նույն դասակարգումը, բայց բաց թողնում հաջորդ դասակարգումները: Օրինակ, եթե երկու տող բաժանում են առաջին տեղը, երկուսին էլ տրվում է 1 դասակարգում, իսկ հաջորդ տողը ստանում է 3 դասակարգում (բաց թողնված է 2):
-
DENSE_RANK(): Նույն արժեքներին նույնպես տալիս է նույն դասակարգումը, բայց չի բաց թողնում դասակարգումները: Օրինակ, երկու տող 1 դասակարգում, հաջորդը ստանում է 2 դասակարգում:
| արժեք | RANK() | DENSE_RANK() |
|---|---|---|
| 100 | 1 | 1 |
| 100 | 1 | 1 |
| 90 | 3 | 2 |
| 80 | 4 | 3 |
Այսպիսով, DENSE_RANK() տալիս է խիտ դասակարգումներ առանց բացթողումների, իսկ RANK() հաշվի է առնում բացթողումները հավասարության դեպքում։