Sobes.tech
Middle

Ի՞նչ տարբերություն կա 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() հաշվի է առնում բացթողումները հավասարության դեպքում։