СКЛ ДЕНСЕ_РАНК() функција

Skl Dense Rank Funkcija



Функције прозора су кључна карактеристика у СКЛ-у и играју основну улогу у сложеним прорачунима података и операцијама у СКЛ базама података. Једна од функција у СКЛ функцијама прозора је денсе_ранк().

Функција ДЕНСЕ_РАНК() нам омогућава да доделимо јединствени ранг сваком реду у оквиру скупа резултата на основу вредности у још једној наведеној колони. Веома је слична функцији ранк(), али са малим разликама у начину на који функција рукује дуплираним записима.

У овом водичу ћемо истражити како ова функција функционише, дату синтаксу и како је можемо користити у бази података.







Како то ради

Почнимо тако што ћемо објаснити како ова функција функционише. Добро је имати на уму да је функција високог нивоа и да не можемо објаснити основну имплементацију.



Функција функционише тако што сваком реду у скупу резултата додељује ранг почевши од ранга 1 и повећавајући се за 1 за сваку јединствену вредност у колонама.



Редови са сличним вредностима (дупликати) у наведеним колонама се додељују истим рангом, а следећем реду са различитом вредношћу се додељује следећи расположиви ранг, без икаквих празнина.





Као што смо споменули, функција не оставља празнине у којима постоје дупле вредности што је чини различитом од функције ранк().

Уобичајена употреба функције денсе_ранк() је извођење операција рангирања. На пример, можемо га користити за проналажење најбољих Н записа итд.



Синтакса функције:

Следеће описује синтаксу функције денсе_ранк():

ДЕНСЕ_РАНК() ПРЕКО (

[ПАРТИТИОН БИ партитион_екпрессион, ... ]

ОРДЕР БИ израз_сортирања [АСЦ | ДЕСЦ], ...

)

У датој синтакси:

  1. Почињемо са самом функцијом денсе_ранк().
  2. Клаузула ОВЕР сигнализира почетак спецификације функције прозора. Ово дефинише како се рангирање примењује у оквиру скупа резултата.
  3. ПАРТИТИОН БИ партитион_екпрессион је опциона клаузула која нам омогућава да поделимо резултујући скуп на групе или партиције на основу једне или више колона. Рангирање се примењује засебно на сваку партицију са ресетовањем ранга на новој партицији.
  4. ОРДЕР БИ сорт_екпрессион специфицира редослед којим желимо да сортирамо податке у резултујућим партицијама.

Примјера података

Да бисмо показали како се користи функција денсе_ранк(), почнимо са табелом са примером података. У нашем случају користимо узорак табеле „поруџбина“ на следећи начин:

Пример 1: Употреба функције Денсе_Ранк().

Можемо користити функцију денсе_ранк() да рангирамо резултујуће налоге на основу цене. Размотрите следећи пример упита:

СЕЛЕЦТ

ИД поруџбине,

корисничко_име купца,

производ_купљени,

ДЕНСЕ_РАНК() ПРЕКО (

ОРДЕР ОД СТРАНЕ

цена ДИСЦ

) прице_ранк

ИЗ

наређења о;

У датом примеру користимо функцију денсе_ранк() да рангирамо податке на основу цене налога. Изостављамо клаузулу ПАРТИТИОН БИ јер не групишемо податке.

Резултат је следећи:

Пример 2: ПАРТИЦИЈА ПО

Такође можемо додати клаузулу ПАРТИТИОН БИ да групишемо податке у различите сегменте, на пример на основу купљеног производа.

Пример упита је следећи:

СЕЛЕЦТ

ИД поруџбине,

корисничко_име купца,

производ_купљени,

ДЕНСЕ_РАНК() ПРЕКО (

партиција по производ_купљени

ОРДЕР ОД СТРАНЕ

цена ДИСЦ

) прице_ранк

ИЗ

наређења о;

Ово би требало да групише податке у различите групе на основу добијених група и примени ранг за ставке у свакој групи.

Закључак

У овом посту смо научили основе коришћења и рада са прозорском функцијом денсе_ранк() у СКЛ-у да бисмо доделили ранг вредностима на основу одређених колона.