СКЛ ОВЕР клаузула

Skl Over Klauzula



Једна од најнапреднијих карактеристика СКЛ-а је клаузула ОВЕР. То је функција која нам омогућава да извршимо прорачуне и применимо функције СКЛ прозора на одређени подскуп редова унутар датог скупа резултата.

Посебно је корисно када треба да израчунате агрегације или рангирања за групе редова, а да заправо не сажмате цео скуп резултата.

Придружите нам се у овом водичу док ћемо сазнати све што треба да знате да бисте почели да радите са клаузулом ОВЕР.







Захтеви:

Пре него што заронимо у функционалност и рад клаузуле ОВЕР, уверите се да сте склонили основе СКЛ-а. Такође претпостављамо да имате приступ бази података коју можете користити да проверите своје знање.



У нашем случају, користићемо МиСКЛ базу података са Сакила узорком базе података. Само се уверите да имате довољне дозволе и да ваш механизам базе података подржава функције прозора.



Синтакса:

Као што смо раније споменули, у већини случајева углавном користимо клаузулу ОВЕР у спрези са функцијама прозора.





Као такав, можемо изразити синтаксу клаузуле на следећи начин:

<функција прозора>(израз) ОВЕР (

[ПАРТИЦИЈА ПРЕМА изразу_партиције, ...]

[ОРДЕР БИ сорт_екпрессион [АСЦ | ДЕСЦ], ...]

[спецификација_фраме]

)

У датој синтакси, сваку компоненту можемо рашчланити на следећи начин:



  1. <функција_прозора> – Односи се на функцију прозора коју желимо да применимо на одређени прозор редова као што су СУМ(), АВГ(), РОВ_НУМБЕР(), РАНК, итд.
  2. Израз – Ово специфицира колону или израз за који се примењује функција прозора.
  3. ПАРТИТИОН БИ – Ово је опциона клаузула која дели скуп резултата на партиције где је свака партиција као засебна јединица где се примењује функција. Редови унутар исте партиције деле исте вредности у наведеним колонама.
  4. ОРДЕР БИ – Ово специфицира редослед којим се обрађују редови у свакој партицији.
  5. фраме_специфицатион – Ово је опциона клаузула која дефинише оквир редова унутар партиције. Уобичајене спецификације оквира укључују РЕДОВЕ ИЗМЕЂУ <почетак> И <крај> или ОПАС ИЗМЕЂУ <почетак> И <крај.

Склонивши то с пута, хајде да истражимо неколико практичних примера како да га користимо.

Пример:

Хајде да демонстрирамо како да користимо клаузулу користећи Сакила базу података узорака. Размотримо пример где треба да одредимо укупан приход за сваку категорију филма.

Можемо користити функцију прозора суме са клаузулом ОВЕР и гомилом наредби за спајање као што је приказано у следећем примеру:

СЕЛЕЦТ
цатегори.наме АС име_категорије,
филм.титле КАО филм_титле,
филм.рентал_рате,
СУМ(уплата.износ) ПРЕКО (ПОДЕЛА ПРЕМА категорији.називу) КАО укупан_приход
ИЗ
филм
ПРИДРУЖИТИ
филм_цатегори ОН
филм.филм_ид = филм_цатегори.филм_ид
ПРИДРУЖИТИ
категорија ОН
филм_цатегори.цатегори_ид = цатегори.цатегори_ид
ПРИДРУЖИТИ
инвентар УКЉУЧЕН
филм.филм_ид = инвентори.филм_ид
ПРИДРУЖИТИ
изнајмљивање ОН
инвентори.инвентори_ид = рентал.инвентори_ид
ПРИДРУЖИТИ
плаћање УКЉУЧЕНО
рентал.рентал_ид = паимент.рентал_ид
ОРДЕР БИ
име категорије,
филм.титле;

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

Морамо да користимо клаузулу ПАРТИТИОН БИ да бисмо осигурали да се израчунавање суме поново покрене у свакој јединственој категорији.

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

То је то!

Закључак

У овом примеру смо истражили основе рада са клаузулом ОВЕР у СКЛ-у. Ово није основна клаузула и захтева претходно познавање других СКЛ функција.