МиСКЛ функција прозора са бројевима редова

Mysql Row Number Window Function



Унутар МиСКЛ -а, метода РОВ НУМБЕР () садржи хронолошки број за сваки ред унутар партиције. То је само нека врста прозора. Број редова почиње са 1 са бројем редова унутар партиције. Запамтите, пре верзије 8.0, МиСКЛ не дозвољава функцију РОВ НУМБЕР (), међутим, нуди променљиву сесије која помаже у имитирању ове функције. У овом водичу ћемо разумети више о функционалности МиСКЛ РОВ НУМБЕР () и произвести узастопни број за сваки ред у збирци резултата. У МиСКЛ -у се методе РОВ_НУМБЕР () користе са следећим клаузулама:

  • У њему ће се користити клаузула Овер ().
  • ОРДЕРС БИ клаузула распоређује резултат према редоследу сортирања поменуте колоне.

Синтакса:

>> СЕЛЕЦТ цол_наме,РОВ_НУМБЕР()ОВЕР( ПОДЕЛА БИ цол_наме, НАРУЧИ ПО цол_наме) КАО ров_нум ФРОМ табле_наме;

Отворимо клијентску љуску командне линије МиСКЛ из апликација и упишимо лозинку за пријављивање.









Морате да креирате нову табелу или да користите подразумевану табелу да бисте започели рад на функцији броја реда. Као што је приказано на доњој слици, имамо табличне животиње у подацима шеме са неким записима у њима. Дохватимо његове записе помоћу инструкције СЕЛЕЦТ.



>> СЕЛЕЦТ * ФРОМ података .Животиње;





Пример 01: РОВ_НУМБЕР () Користећи ОРДЕР БИ клаузулу

Користићемо исту табелу за разраду неких примера функције броја реда. Узимамо пример функције РОВ_НУМБЕР () након које следи Овер (), док користимо само клаузулу ОРДЕР БИ. Добијали смо све записе док смо нумерисали редове према колони Налог цена. Дали смо име ров_нум колони која ће складиштити бројеве реда. Покушајмо наредну наредбу да то урадимо.

>> СЕЛЕЦТ *,РОВ_НУМБЕР()ОВЕР( НАРУЧИ ПО Цена) КАО ров_нум ФРОМ података .Животиње;

Након извршавања горњег упита, можемо видети да су редови додељени бројевима према редоследу сортирања колоне Цена. Можда мислите да би неке мање цене требале бити на врху колоне и према томе би се требале сортирати. Али клаузула ОРДЕР БИ види само прву цифру или абецеду колоне за сортирање вредности.



Извршимо исти упит иза кога следи клаузула ОРДЕР БИ користећи редослед сортирања колоне Аге. Излаз ће бити дат према колони Аге.

>> СЕЛЕЦТ *,РОВ_НУМБЕР()ОВЕР( НАРУЧИ ПО Старост) КАО ров_нум ФРОМ података .Животиње;

Пример 02: РОВ_НУМБЕР () Коришћењем ПАРТИТИОН БИ клаузуле

Користићемо једину клаузулу ПАРТИТИОН БИ у упиту РОВ_НУМБЕР () за проверу резултата. Користили смо упит СЕЛЕЦТ за преузимање записа праћених РОВ_НУМБЕР () и ОВЕР клаузулом, док смо табелу поделили према колони Цолор. Извршите наредбу испод у командној љусци.

>> СЕЛЕЦТ *,РОВ_НУМБЕР()ОВЕР( ПОДЕЛА БИ Цолор) КАО ров_нум ФРОМ података .Животиње;

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

Испробајте исти пример, овај пут подељен по колони Пол. Као што знамо, у овој табели имамо само два пола, зато ће се формирати 2 партиције. Женке заузимају 9 редова, зато има бројеве од 1 до 9. Док мушкарци имају 8 вредности, зато има 1 до 8.

>> СЕЛЕЦТ *,РОВ_НУМБЕР()ОВЕР( ПОДЕЛА ПО СОЛУ) КАО ров_нум ФРОМ података .Животиње;

Пример 03: РОВ_НУМБЕР () Користи ПАРТИТИОН БИ & ОРДЕР БИ

Урадили смо горња два примера у МиСКЛ командној линији, сада је време да урадимо пример РОВ_НУМБЕР () у МиСКЛ Воркбенцх 8.0. Дакле, отворите МиСКЛ Воркбенцх 8.0 из апликација. Повежите МиСКЛ Воркбенцх са локалном хостовом коренском базом података да бисте започели са радом.

На левој страни МиСКЛ Воркбенцх -а наћи ћете траку са шемом, разнети навигатор. На овој траци са шемама пронаћи ћете листу база података. На списку база података имат ћете различите табеле и ускладиштене процедуре, као што можете видјети на доњој слици. У нашој бази података имамо различите табеле „података“. Отворит ћемо табелу „ордер1“ помоћу наредбе СЕЛЕЦТ у подручју упита да бисмо је почели користити за имплементацију функције РОВ_НУМБЕР ().

>> СЕЛЕЦТ * ФРОМ података .наредба1;

Редослед табеле1 приказан је у приказу мреже као што је приказано испод. Можете видети да има 4 поља колоне, ид, регион, статус и редни број. Добићемо све записе ове табеле док користимо клаузуле ОРДЕР БИ и ПАРТИТИОН БИ, обе у исто време.

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

Приказаће се доле приказани резултат. Пре свега, табела је подељена на два дела према вредностима колоне Статус. Након тога, представљен је у опадајућем редоследу колоне „Регион“ и партицијама су додељени бројеви редова.

Закључак:

Коначно, довршили смо све потребне примере у коришћењу функције РОВ_НУМБЕР () у МиСКЛ Воркбенцх-у и МиСКЛ командној линији командне линије.