Funzione di rango Oracle

Funzione di rango Oracle

In questo post, incontrerai la funzione di rango () nei database Oracle che consente di determinare il grado di riga da un determinato set di righe.

Funzione di rango Oracle

La funzione Rank () in Oracle ci consente di assegnare un grado a ciascuna riga in un set di risultati. La funzione assegna lo stesso grado a tutte le righe con valori simili e aggiunge un numero alla riga successiva nel rango.

Possiamo esprimere la sintassi per la funzione come mostrato nella seguente:

Rank () su (
[query_partition_clause]
Ordine di Sort_Expression [ASC | Desc] [Nulls First | SCORSO]
);

La funzione supporta i seguenti parametri:

  1. query_partition_clause - È una clausola opzionale che definisce la condizione per la divisione delle righe nel risultato della query impostata in vari gruppi o partizioni. La funzione di rango () viene quindi applicata singolarmente alle partizioni risultanti.
  2. sort_expression - Questo parametro imposta la colonna o l'espressione utilizzata per determinare la classifica delle righe. Le righe risultanti sono classificate in ordine crescente o discendente come definito dalle parole chiave ASC e DESC. L'ordine di ordinamento predefinito è impostato su Ascendente.
  3. Infine, la parola chiave NULLS determina come la funzione tratta eventuali valori null quando si classifica le righe. I parametri accettati includono:
    • La prima e le ultime parole chiave che specificano se i valori null dovrebbero essere classificati prima o ultimo. Per impostazione predefinita, la funzione ordina prima i valori null.

ORACLE RANK () Esempi di funzioni

Per illustrare come utilizzare la funzione Rank () in Oracle, utilizzeremo la Tabella Employe Default Collection.

Considera la seguente tabella:

Seleziona First_name, last_name, stipendio, job_id da dipendenti EMP;

Risultato:

Esempio 1: usando la funzione di rango per determinare il grado

Questo esempio dimostra l'uso della funzione di rango () nel determinare il grado di ciascun dipendente nella tabella.

Seleziona first_name, last_name, stipendio, job_id, rank () su (ordine per salario ASC) come rango
dai dipendenti EMP;

Nella query fornita, utilizziamo la funzione di rango per assegnare una classifica a ciascuna riga nella tabella dei dipendenti in base ai valori nella colonna salariale.

La funzione utilizza la clausola "Ordine per" per specificare l'ordine in cui sono classificate le righe. Nel nostro esempio, utilizziamo l'ordine ascendente in base al valore della colonna salariale.

La funzione assegna quindi la riga con lo stipendio più basso un grado di 1 e il più alto grado di stipendio di N, dove N rappresenta il numero di righe nella tabella.

Come potresti notare, alle righe con valori salariali simili sono assegnati lo stesso rango.

Esempio 2: usando la funzione di rango con ordine per clausola

Supponiamo di voler raggruppare le righe in base a Job_id e quindi assegnare un grado alle righe in ogni partizione.

Possiamo eseguire una query come mostrato nel seguente:

Seleziona First_name, last_name, stipendio, job_id, rank () sopra (
Partizione di job_id
Ordine per salario ASC
) Come rango
Dai dipendenti EMP;

La clausola di partizione per clausola divide le righe dalla tabella del dipendente nei vari gruppi in base alla colonna Job_id.

La funzione di rango assegna quindi una classifica a ciascuna riga in ogni partizione con lo stipendio più basso in ogni partizione che riceve un grado di 1 e lo stipendio più alto in ogni partizione che riceve un grado di N (dove n è il numero di righe nella partizione).

Risultato:

Conclusione

In questo tutorial, hai imparato a usare la funzione di rango () di Oracle. Sebbene la funzione di rango () possa essere utile, può portare a un colpo di prestazione soprattutto quando si lavora con query complesse e set di dati di grandi dimensioni.