SQL ROW_NUMBER (Italiano)

Riepilogo: in questo tutorial imparerai come utilizzare ROW_NUMBER() per assegnare un numero sequenziale a ciascuna riga in un set di risultati di query.

Panoramica della funzione SQL ROW_NUMBER ()

ROW_NUMBER() è una funzione finestra che assegna un numero intero sequenziale a ogni riga nel set di risultati della query.

Quanto segue illustra la sintassi della funzione ROW_NUMBER():

In questa sintassi,

  • Innanzitutto, la clausola PARTITION BY divide il set di risultati restituito dal FROM clausola nelle partizioni. La clausola PARTITION BY è facoltativa. Se lo ometti, l’intero set di risultati viene trattato come una singola partizione.
  • Quindi, la clausola ORDER BY ordina le righe in ciascuna partizione. Poiché ROW_NUMBER() è una funzione sensibile all’ordine, è richiesta la clausola ORDER BY.
  • Infine, ogni riga in ciascuna alla partizione viene assegnato un numero intero sequenziale chiamato numero di riga. Il numero di riga viene reimpostato ogni volta che viene superato il limite della partizione.

Esempi SQL ROW_NUMBER ()

Useremo employees e departments dal database di esempio per la dimostrazione:

A) Semplice esempio SQL ROW_NUMBER ()

La seguente istruzione trova il nome, il cognome e lo stipendio di tutti i dipendenti. Inoltre, utilizza la funzione ROW_NUMBER() per aggiungere un numero intero sequenziale a ciascuna riga.

L’immagine seguente mostra il set di risultati parziale:

B ) Utilizzo di SQL ROW_NUMBER () per l’impaginazione

La funzione ROW_NUMBER() può essere utilizzata per l’impaginazione. Ad esempio, se desideri visualizzare tutti i dipendenti su una tabella in un’applicazione per pagine, ciascuna pagina ha dieci record.

  • Innanzitutto, utilizza ROW_NUMBER() funzione per assegnare a ciascuna riga un numero intero sequenziale.
  • In secondo luogo, filtra le righe per pagina richiesta. Ad esempio, la prima pagina ha le righe che iniziano da uno a 9 e la seconda pagina ha le righe che iniziano da 11 a 20 e così via.

La seguente istruzione restituisce i record di la seconda pagina, ogni pagina ha dieci record.

Quanto segue mostra l’output:

Se desideri utilizzare l’espressione di tabella comune (CTE) invece della sottoquery, ecco la query:

C) Uso di SQL ROW_NUMBER () per trovare l’ennesimo valore più alto per gruppo

L’esempio seguente mostra come trovare i dipendenti che hanno lo stipendio più alto nei loro reparti:

Nella sottoquery:

  • Innanzitutto, la clausola PARTITION BY distribuisce i dipendenti per reparti.
  • In secondo luogo, il ORDER BY la clausola ordina il dipendente in ogni reparto in base allo stipendio in ordine decrescente.
  • Terzo, ROW_NUMBER() assegna a ciascuna riga un numero intero sequenziale . Reimposta il numero quando il reparto cambia.

Quanto segue mostra il set di risultati della sottoquery:

Nella query esterna, abbiamo selezionato solo le righe dei dipendenti che hanno row_num con il valore 1.

Ecco l’output dell’intera query:

Se modifichi il predicato nella WHERE clausola da 1 a 2, 3 e così via, otterrai i dipendenti che hanno il secondo stipendio più alto, il terzo stipendio più alto e così via.

In questo tutorial, hai imparato a utilizzare la funzione SQL ROW_NUMBER() per assegnare una sequenza numero intero per ogni riga nel set di risultati di una query.

  • Questo tutorial è stato utile?
  • SìNo

Write a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *