Passa al contenuto principale
Workday User Guide
Ultimo aggiornamento: 2023-06-23
ROW_NUMBER

ROW_NUMBER

Descrizione

ROW_NUMBER
è una funzione di aggregazione della finestra che suddivide le righe in gruppi, ordina le righe in base a un campo e assegna un numero sequenziale univoco a ogni riga di un gruppo, a partire da 1 per la prima riga di ogni gruppo.
ROW_NUMBER
assegna sempre un valore univoco a ogni riga di un gruppo. È possibile utilizzare
ROW_NUMBER
per creare un ID univoco per ogni riga del set di dati.
Il
PARTITION BY
La clausola determina i campi da utilizzare per suddividere un insieme di righe di input in gruppi.
Il
ORDER BY
La clausola determina come ordinare le righe nella partizione prima che venga assegnato loro un numero progressivo.
Il sistema separa le righe di input in gruppi in base ai campi di partizionamento, ordina le righe in base ai campi di ordinamento e quindi calcola l'espressione aggregata (numerazione delle righe per questa funzione) in ogni gruppo. Le righe numerate in ogni gruppo iniziano da 1.

Sintassi

ROW_NUMBER
()
OVER
(
PARTITION BY
partitioning_field
[,
partitioning_field
]
ORDER BY
ordering_field
[ASC | DESC] [,
ordering_field
[ASC | DESC]] )

Valore restituito

Restituisce un valore di tipo
INTEGER
.

Parametri di input

OVER()
Obbligatorio
OVER
deve essere utilizzato all'interno di a
ROW_NUMBER
espressione
PARTITION BY
partitioning_field
Sono obbligatori. Utilizzare il
PARTITION BY
per specificare uno o più campi da utilizzare per partizionare un gruppo di righe di input. È possibile specificare qualsiasi tipo di campo tranne Valuta. Esempio: si specifica il campo Mese come campo di partizionamento, in modo che il sistema raggruppa in un'unica partizione tutti i record che hanno lo stesso valore per il mese.
ORDER BY
ordering_field
Sono obbligatori. Utilizzare il
ORDER BY
per specificare come ordinare le righe di input nella partizione utilizzando i valori nel campo specificato all'interno di ogni partizione. È possibile specificare qualsiasi tipo di campo tranne Valuta.
È possibile utilizzare
DESC
o
ASC
per ordinare le parole chiave in ordine decrescente (valori da decrescente, valori NULL ultimi) o crescente (valori decrescenti, valori NULL primi) per ogni campo di ordinamento. Se non si specifica un ordinamento per un campo di ordinamento, il sistema ordina automaticamente le righe in ordine crescente.

Esempi

Esempio: si dispone di un set di dati con queste righe e questi campi.
Dipendente
Data vendita
Vendite
Ehi
12/31/2018
140
Ehi
11/30/2018
60
Ehi
10/31/2018
140
Freeman
12/31/2018
160
Freeman
11/30/2018
60
Freeman
10/31/2018
110
Smith
12/31/2018
140
Smith
11/30/2018
60
Smith
10/31/2018
120
È possibile assegnare un ID univoco alle vendite di ogni dipendente in ordine decrescente, in modo che alle vendite più alte venga assegnato il ranking 1. Utilizzare questa espressione nel campo
N. vendite per dipendente
:
ROW_NUMBER() OVER( PARTITION BY [Employee] ORDER BY [Sales] DESC)
Si ottengono i seguenti risultati:
Dipendente
Data vendita
Vendite
N. vendite per dipendente
Ehi
12/31/2018
140
1
Ehi
10/31/2018
140
2
Ehi
11/30/2018
60
3
Freeman
12/31/2018
160
1
Freeman
10/31/2018
110
2
Freeman
11/30/2018
60
3
Smith
12/31/2018
140
1
Smith
10/31/2018
120
2
Smith
11/30/2018
60
3
È anche possibile assegnare un ID univoco alle vendite per ogni data in ordine decrescente, in modo che alle vendite più alte venga assegnato il ranking 1. Utilizzare questa espressione nel campo
N. vendite per data
:
ROW_NUMBER() OVER( PARTITION BY [Sales Date] ORDER BY [Sales] DESC)
Si ottengono i seguenti risultati:
Dipendente
Data vendita
Vendite
N. vendite per data
Freeman
12/31/2018
160
1
Ehi
12/31/2018
140
2
Smith
12/31/2018
140
3
Ehi
11/30/2018
60
1
Freeman
11/30/2018
60
2
Smith
11/30/2018
60
3
Ehi
10/31/2018
140
1
Smith
10/31/2018
120
2
Freeman
10/31/2018
110
3
È anche possibile utilizzare
ROW_NUMBER
per determinare la versione più recente di ogni riga in un set di dati che contiene più righe per ID. In questo scenario, il set di dati richiede un campo data che rappresenti il momento in cui le informazioni in quella riga sono diventate aggiornate. Se si ha familiarità con i concetti di data warehousing, questa è una tabella dimensionale di tipo 2 che cambia lentamente. Si dispone di un set di dati con queste righe e questi campi.
ID
Nome
Area geografica
Decorrenza
G1
Gorman
Ovest
01/01/2015
H1
Harris
Ovest
01/01/2015
G1
Gorman
Est
09/01/2016
H1
Harris
Est
01/03/2017
H1
Harris
Nazionale
01/20/2021
Per assegnare il valore 1 alla versione più recente di ogni ID, utilizzare questa espressione nel campo
Ultima versione
:
ROW_NUMBER() OVER( PARTITION BY [ID] ORDER BY [Effective Date] DESC)
Si ottengono i seguenti risultati:
ID
Nome
Area geografica
Decorrenza
Ultima versione
G1
Gorman
Ovest
01/01/2015
2
H1
Harris
Ovest
01/01/2015
3
G1
Gorman
Est
09/01/2016
1
H1
Harris
Est
01/03/2017
2
H1
Harris
Nazionale
01/20/2021
1
È possibile filtrare in base alla
versione più recente
utilizzando una fase filtro per restituire solo la riga più recente per ogni ID.