ROW_NUMBER (Italiano)
Sintassi
Descrizione del illustrazione row_number.gif
Vedi anche:
“Analytic Functions” per informazioni su sintassi, semantica e restrizioni
Scopo
ROW_NUMBER
è una funzione analitica. Assegna un numero univoco a ciascuna riga a cui viene applicato (ogni riga nella partizione o ogni riga restituita dalla query), nella sequenza ordinata di righe specificata in order_by_clause
, che inizia con 1.
Nidificando una sottoquery utilizzando ROW_NUMBER
all’interno di una query che recupera i valori ROW_NUMBER
per un intervallo specificato, è possibile trovare un sottoinsieme preciso di righe dai risultati della query interna. Questo utilizzo della funzione consente di implementare rapporti top-N, bottom-N e inner-N. Per risultati coerenti, la query deve garantire un ordinamento deterministico.
Non è possibile utilizzare ROW_NUMBER
o qualsiasi altra funzione analitica per expr
. Cioè, non puoi annidare funzioni analitiche, ma puoi usare altre espressioni di funzioni incorporate per expr
. Fare riferimento a “Informazioni sulle espressioni SQL” per informazioni sui moduli validi di expr
.
Esempi
Per ogni reparto nella tabella di esempio oe.employees
, il seguente esempio assegna numeri a ciascuna riga in base alla data di assunzione del dipendente:
ROW_NUMBER
è un funzione non deterministica. Tuttavia, employee_id
è una chiave univoca, quindi i risultati di questa applicazione della funzione sono deterministici.
Vedi anche:
FIRST_VALUE e LAST_VALUE per esempi di comportamento non deterministico
La seguente query interna-N seleziona tutte le righe dalla tabella employees
ma restituisce solo dalla cinquantunesima all’una- centesima riga:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;