Funzione SQL DENSE_RANK()

Funzione Sql Dense Rank



Le funzioni finestra sono una caratteristica cruciale in SQL e svolgono un ruolo fondamentale nei calcoli e nelle operazioni di dati complessi nei database SQL. Una delle funzioni nelle funzioni della finestra SQL è dense_rank().

La funzione DENSE_RANK() ci consente di assegnare un rango univoco a ciascuna riga all'interno di un set di risultati in base ai valori in una colonna specificata. È molto simile alla funzione rango() ma con lievi differenze nel modo in cui la funzione gestisce i record duplicati.

In questo tutorial esploreremo come funziona questa funzione, la sintassi fornita e come possiamo utilizzarla in un database.







Come funziona

Cominciamo spiegando come funziona questa funzione. È bene tenere presente che la funzione è di alto livello e non possiamo spiegare l'implementazione sottostante.



La funzione funziona assegnando un rango a ciascuna riga nel set di risultati a partire dal rango 1 e aumentando di 1 per ogni valore univoco nelle colonne.



Alle righe con valori simili (duplicati) nelle colonne specificate viene assegnato lo stesso rango e alla riga successiva con valore diverso viene assegnato il successivo rango disponibile, senza spazi.





Come accennato, la funzione non lascia spazi vuoti in presenza di valori duplicati, il che la rende diversa dalla funzione rango().

Un uso comune della funzione dense_rank() è l'esecuzione di operazioni di classificazione. Ad esempio, possiamo usarlo per trovare i primi N record, ecc.



Sintassi della funzione:

Di seguito viene descritta la sintassi della funzione dense_rank():

DENSE_RANK() SOPRA (

[PARTIZIONE PER espressione_partizione, ...]

ORDINE BY espressione_ordinamento [ASC | DESC], ...

)

Nella sintassi data:

  1. Iniziamo con la funzione dense_rank() stessa.
  2. La clausola OVER segnala l'inizio delle specifiche della funzione finestra. Ciò definisce il modo in cui la classifica viene applicata all'interno del set di risultati.
  3. PARTITION BY Partition_expression è una clausola opzionale che ci consente di partizionare il set risultante in gruppi o partizioni in base a una o più colonne. La classificazione viene applicata separatamente su ciascuna partizione e la classificazione viene reimpostata in una nuova partizione.
  4. ORDER BY sort_expression specifica l'ordine in cui desideriamo utilizzare per ordinare i dati nelle partizioni risultanti.

Dati campione

Per dimostrare come utilizzare la funzione dense_rank(), iniziamo con una tabella con dati di esempio. Nel nostro caso, utilizziamo una tabella “ordini” di esempio come segue:

Esempio 1: utilizzo della funzione Dense_Rank()

Possiamo utilizzare la funzione dense_rank() per classificare gli ordini risultanti in base al prezzo. Considera la seguente query di esempio:

SELEZIONARE

ID ordine,

nome_utente_cliente,

prodotto_acquistato,

DENSE_RANK() SOPRA (

ORDINE DI

prezzo DISC

) rango_prezzo

DA

ordini o;

Nell'esempio fornito, utilizziamo la funzione dense_rank() per classificare i dati in base al prezzo degli ordini. Omettiamo la clausola PARTITION BY perché non raggruppiamo i dati.

L'output risultante è il seguente:

Esempio 2: PARTIZIONE PER

Possiamo anche aggiungere la clausola PARTITION BY per raggruppare i dati in vari segmenti ad esempio in base al prodotto acquistato.

Una query di esempio è la seguente:

SELEZIONARE

ID ordine,

nome_utente_cliente,

prodotto_acquistato,

DENSE_RANK() SOPRA (

partizione per prodotto_acquistato

ORDINE DI

prezzo DISC

) rango_prezzo

DA

ordini o;

Ciò dovrebbe raggruppare i dati in vari gruppi in base ai gruppi risultanti e applicare la classificazione per gli elementi in ciascun gruppo.

Conclusione

In questo post abbiamo appreso le basi dell'utilizzo e del lavoro con la funzione finestra dense_rank() in SQL per assegnare un rango ai valori in base a colonne specifiche.