Funcția MySQL Row Number Window

Mysql Row Number Window Function



În cadrul MySQL, o metodă ROW NUMBER () conține un număr cronologic pentru fiecare rând din cadrul partiției. Este doar o caracteristică de fereastră de un fel. Figura rândurilor începe de la 1 cu figura rândurilor din partiție. Amintiți-vă, înainte de versiunea 8.0, MySQL nu permite funcția ROW NUMBER (), însă oferă o variabilă de sesiune care vă ajută să imitați această caracteristică. Vom înțelege mai multe despre funcționalitatea MySQL ROW NUMBER () în acest ghid și vom produce un număr consecutiv pentru fiecare rând din colecția de rezultate. În MySQL, metodele ROW_NUMBER () sunt utilizate fie cu clauzele următoare:

  • Clauza Over () va fi utilizată în cadrul acesteia.
  • Clauza ORDERS BY aranjează rezultatul în conformitate cu ordinea de sortare a coloanei menționate.

Sintaxă:

>> SELECTAȚI col_name,ROW_NUMBER()PESTE( PARTIȚIE BY col_name, COMANDA DE col_name) LA FEL DE rând_num DIN nume_tabel;

Permiteți-ne să deschidem shell-ul clientului din linia de comandă MySQL din aplicații și să tastăm parola pentru a vă conecta.









Trebuie să creați un nou tabel sau să utilizați tabelul implicit pentru a începe să lucrați la funcția numărului de rând. Așa cum este prezentat în imaginea de mai jos, avem un tabel cu animale în datele schemei, cu câteva înregistrări în ea. Să preluăm înregistrările sale folosind instrucțiunea SELECT.



>> SELECTAȚI * DIN date .animale;





Exemplul 01: ROW_NUMBER () Utilizarea clauzei ORDER BY

Vom folosi același tabel pentru a detalia câteva exemple ale funcției numărului de rânduri. Luăm un exemplu al funcției ROW_NUMBER () urmată de Over (), în timp ce folosim doar clauza ORDER BY. Am preluat toate înregistrările în timp ce numerotam rândurile în conformitate cu coloana Ordinea prețurilor. Am dat numele rând_num unei coloane, care va stoca numerele rândului. Să încercăm comanda de mai jos pentru a face acest lucru.

>> SELECTAȚI *,ROW_NUMBER()PESTE( COMANDA DE Preț) LA FEL DE rând_num DIN date .animale;

La executarea interogării de mai sus, putem vedea că rândurile au fost atribuite cu numere în conformitate cu ordinea de sortare a coloanei Preț. S-ar putea să credeți că unele prețuri mai mici ar trebui să fie în partea de sus a coloanei și ar trebui să fie sortate în funcție de asta. Dar clauza ORDER BY vede doar prima cifră sau alfabetul coloanei pentru a sorta valorile.



Să executăm aceeași interogare urmată de clauza ORDER BY în timp ce utilizăm ordinea de sortare a coloanei Vârstă. Rezultatul va fi dat în conformitate cu coloana Vârstă.

>> SELECTAȚI *,ROW_NUMBER()PESTE( COMANDA DE Vârstă) LA FEL DE rând_num DIN date .animale;

Exemplul 02: ROW_NUMBER () Utilizarea clauzei PARTITION BY

Vom folosi singura clauză PARTITION BY din interogarea ROW_NUMBER () pentru a verifica rezultatele. Am folosit interogarea SELECT pentru a prelua înregistrările urmate de clauza ROW_NUMBER () și OVER, în timp ce partiționăm tabelul conform coloanei Culoare. Executați comanda anexată mai jos în shell-ul comenzii.

>> SELECTAȚI *,ROW_NUMBER()PESTE( PARTIȚIE BY Color) LA FEL DE rând_num DIN date .animale;

Puteți vedea în rezultat că numerotarea rândurilor a fost atribuită în partiții, în funcție de ordinea de sortare a culorilor. Deoarece avem 4 valori pentru culoarea Negru, care durează 4 rânduri. De aceea are numere de patru rânduri începând de la 1 la 4 și invers.

Încercați același exemplu, partiționat de coloana Sex de data aceasta. După cum știm, avem doar două sexe în acest tabel, de aceea se vor forma 2 partiții. Femelele ocupă 9 rânduri, de aceea are numerotarea rândurilor de la 1 la 9. În timp ce bărbații au 8 valori, de aceea are 1 la 8.

>> SELECTAȚI *,ROW_NUMBER()PESTE( PARTIȚIE După gen) LA FEL DE rând_num DIN date .animale;

Exemplul 03: ROW_NUMBER () Folosind PARTITION BY & ORDER BY

Am făcut cele două exemple de mai sus în linia de comandă MySQL, acum este timpul să facem exemplul ROW_NUMBER () în MySQL Workbench 8.0. Deci, deschideți MySQL Workbench 8.0 din aplicații. Conectați MySQL Workbench la baza de date rădăcină gazdă locală pentru a începe să funcționați.

În partea stângă a MySQL Workbench, veți găsi bara Schema, aruncați navigatorul. În această bară Schemă, veți găsi lista bazelor de date. În lista bazelor de date, veți avea diferite tabele și proceduri stocate, după cum puteți vedea în imaginea de mai jos. Avem tabele diferite în baza de date „date”. Vom deschide tabelul „order1” folosind comanda SELECT din zona de interogare pentru a începe să o folosim pentru implementarea funcției ROW_NUMBER ().

>> SELECTAȚI * DIN date .comanda1;

Ordinea tabelului1 a fost afișată în vizualizarea grilă așa cum se arată mai jos. Puteți vedea că are 4 câmpuri de coloană, id, regiune, stare și nr de comandă. Vom prelua toate înregistrările acestui tabel în timp ce folosim clauzele ORDER BY și PARTITION BY, ambele în același timp.

În zona de interogare MySQL Workbench 8.0, tastați interogarea afișată mai jos. Interogarea a fost începută cu clauza SELECT, preluând toate înregistrările urmate de funcția ROW_NUMBER () împreună cu clauza OVER. După clauza OVER, am specificat coloana Status, urmată de instrucțiunea PARTITION BY pentru a împărți tabela în partiții conform acestui tabel. Clauza ORDER BY este utilizată pentru a aranja tabelul în mod descendent în conformitate cu coloana Regiune. Numerele rândurilor vor fi păstrate în coloana row_num. Atingeți pictograma bliț pentru a executa această comandă.

Va fi afișat rezultatul afișat mai jos. În primul rând, tabelul a fost separat în două părți conform valorilor coloanei Stare. După aceea, a fost prezentat în ordinea descrescătoare a coloanei „Regiune” și partițiile au fost atribuite cu numerele de rând.

Concluzie:

În cele din urmă, am completat toate exemplele necesare în utilizarea funcției ROW_NUMBER () în MySQL Workbench și MySQL din linia de comandă Client Shell.