SQL ROW_NUMBER (Română)

Rezumat: în acest tutorial, veți afla cum să utilizați ROW_NUMBER() pentru a atribui un număr secvențial fiecărui rând într-un set de rezultate de interogare.

SQL ROW_NUMBER () Prezentare generală a funcției

ROW_NUMBER() este o funcție de fereastră care atribuie un număr întreg secvențial fiecare rând din setul de rezultate al interogării.

Următoarele ilustrează sintaxa funcției ROW_NUMBER():

În această sintaxă,

  • Mai întâi, clauza PARTITION BY împarte setul de rezultate returnat din FROM clauză în partiții. Clauza PARTITION BY este opțională. Dacă îl omiteți, întregul set de rezultate este tratat ca o singură partiție.
  • Apoi, clauza ORDER BY sortează rândurile din fiecare partiție. Deoarece ROW_NUMBER() este o funcție sensibilă la ordine, este necesară clauza ORDER BY.
  • În cele din urmă, fiecare rând din fiecare partiției i se atribuie un număr întreg secvențial numit număr de rând. Numărul rândului este resetat ori de câte ori este trecută granița partiției.

Exemple SQL ROW_NUMBER ()

Vom folosi employees și departments tabele din baza de date eșantion pentru demonstrație:

A) Exemplu SQL ROW_NUMBER simplu ()

Următoarea declarație găsește prenumele, prenumele și salariul tuturor angajaților. În plus, folosește funcția ROW_NUMBER() pentru a adăuga un număr întreg secvențial la fiecare rând.

Imaginea următoare arată setul de rezultate parțiale:

B ) Utilizarea SQL ROW_NUMBER () pentru paginare

Funcția ROW_NUMBER() poate fi utilizată pentru paginare. De exemplu, dacă doriți să afișați toți angajații pe o masă într-o aplicație pe pagini, fiecare pagină având zece înregistrări.

  • Mai întâi, utilizați ROW_NUMBER() funcție pentru a atribui fiecărui rând un număr întreg secvențial.
  • În al doilea rând, filtrați rândurile după pagina solicitată. De exemplu, prima pagină are rândurile începând de la unu la 9, iar a doua pagină are rândurile începând de la 11 la 20 și așa mai departe.

Următoarea declarație returnează înregistrările a doua pagină, fiecare pagină are zece înregistrări.

Următorul arată rezultatul:

Dacă doriți să utilizați expresia de masă comună (CTE) în loc de interogare, iată interogarea:

C) Utilizarea SQL ROW_NUMBER () pentru a găsi cea de-a noua valoare pe grup

Următorul exemplu vă arată cum să găsiți angajații care au cel mai mare salariu în departamentele lor:

În subconsultare:

  • În primul rând, clauza PARTITION BY distribuie angajații pe departamente.
  • În al doilea rând, ORDER BY clauza sortează angajatul din fiecare departament după salariu în ordinea descrescătoare.
  • În al treilea rând, ROW_NUMBER() atribuie fiecărui rând un număr întreg secvențial . Resetează numărul la schimbarea departamentului.

Următorul arată setul de rezultate al interogării:

În interogarea externă, am selectat numai rândurile angajaților care au row_num valoarea 1.

Iată rezultatul întregii interogări:

Dacă schimbați predicatul din clauza WHERE de la 1 la 2, 3 și așa mai departe, veți obține angajații care au al doilea salariu cel mai mare, al treilea cel mai mare salariu și așa mai departe.

În acest tutorial, ați învățat cum să utilizați funcția SQL ROW_NUMBER() pentru a atribui o secvențială număr întreg la fiecare rând din setul de rezultate al unei interogări.

  • A fost util acest tutorial?
  • Da Nu

Write a Comment

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *