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() ითვალისწინებს გამოტოვებებს ტოლობის დროს.